this.createjs = this.createjs || {};

createjs.extend = function(c, b) {

    function a() {

        this.constructor = c

    }

    return a.prototype = b.prototype, c.prototype = new a

};

this.createjs = this.createjs || {};

createjs.promote = function(c, b) {

    var a = c.prototype,

        d = Object.getPrototypeOf && Object.getPrototypeOf(a) || a.__proto__;

    if (d) {

        a[(b += "_") + "constructor"] = d.constructor;

        for (var e in d) a.hasOwnProperty(e) && "function" == typeof d[e] && (a[b + e] = d[e])

    }

    return c

};

this.createjs = this.createjs || {};

createjs.indexOf = function(c, b) {

    for (var a = 0, d = c.length; d > a; a++)

        if (b === c[a]) return a;

    return -1

};

this.createjs = this.createjs || {};

var bestscore = 0;

var saveScore = function(s) {

    // LaggedAPI.init('monster_soccre_int', 'lagdevaF3001');
    

    if (s > bestscore) {

        bestscore = s;

        var boardinfo = {};

        boardinfo.score = bestscore;

        boardinfo.board = "monster_soccer_hsbnrrds";

        // LaggedAPI.Scores.save(boardinfo, function(response) {

        //     if (response.success) {

        //         console.log('high score saved')

        //     } else {

        //         console.log(response.errormsg);

        //     }

        // });

        var ach = false;

        var ach_numb = [];

        if (s > 19) {

            ach = true;

            ach_numb.push("monster_soccs_hahn02");

        }

        if (s > 9) {

            ach = true;

            ach_numb.push("monster_soccs_hahn01");

        }

        if (ach) {

            // LaggedAPI.Achievements.save(ach_numb, function(response) {

            //     if (response.success) {

            //         console.log('achievement saved')

            //     } else {

            //         console.log(response.errormsg);

            //     }

            // });

        }

    }

};

(function() {

    function c(a, d, e) {

        this.type = a;

        this.currentTarget = this.target = null;

        this.eventPhase = 0;

        this.bubbles = !!d;

        this.cancelable = !!e;

        this.timeStamp = (new Date).getTime();

        this.removed = this.immediatePropagationStopped = this.propagationStopped = this.defaultPrevented = !1

    }

    var b = c.prototype;

    b.preventDefault = function() {

        this.defaultPrevented = this.cancelable && !0

    };

    b.stopPropagation = function() {

        this.propagationStopped = !0

    };

    b.stopImmediatePropagation = function() {

        this.immediatePropagationStopped = this.propagationStopped = !0

    };

    b.remove = function() {

        this.removed = !0

    };

    b.clone = function() {

        return new c(this.type, this.bubbles, this.cancelable)

    };

    b.set = function(a) {

        for (var d in a) this[d] = a[d];

        return this

    };

    b.toString = function() {

        return "[Event (type=" + this.type + ")]"

    };

    createjs.Event = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this._captureListeners = this._listeners = null

    }

    var b = c.prototype;

    c.initialize = function(a) {

        a.addEventListener = b.addEventListener;

        a.on = b.on;

        a.removeEventListener = a.off = b.removeEventListener;

        a.removeAllEventListeners = b.removeAllEventListeners;

        a.hasEventListener = b.hasEventListener;

        a.dispatchEvent = b.dispatchEvent;

        a._dispatchEvent = b._dispatchEvent;

        a.willTrigger = b.willTrigger

    };

    b.addEventListener = function(a, d, e) {

        var g;

        g = e ? this._captureListeners = this._captureListeners || {} : this._listeners =

            this._listeners || {};

        var f = g[a];

        return f && this.removeEventListener(a, d, e), f = g[a], f ? f.push(d) : g[a] = [d], d

    };

    b.on = function(a, d, e, g, f, b) {

        return d.handleEvent && (e = e || d, d = d.handleEvent), e = e || this, this.addEventListener(a, function(a) {

            d.call(e, a, f);

            g && a.remove()

        }, b)

    };

    b.removeEventListener = function(a, d, e) {

        if (e = e ? this._captureListeners : this._listeners) {

            var g = e[a];

            if (g)

                for (var f = 0, b = g.length; b > f; f++)

                    if (g[f] == d) {

                        1 == b ? delete e[a] : g.splice(f, 1);

                        break

                    }

        }

    };

    b.off = b.removeEventListener;

    b.removeAllEventListeners = function(a) {

        a ?

            (this._listeners && delete this._listeners[a], this._captureListeners && delete this._captureListeners[a]) : this._listeners = this._captureListeners = null

    };

    b.dispatchEvent = function(a, d, e) {

        if ("string" == typeof a) {

            var g = this._listeners;

            if (!(d || g && g[a])) return !0;

            a = new createjs.Event(a, d, e)

        } else a.target && a.clone && (a = a.clone());

        try {

            a.target = this

        } catch (f) {}

        if (a.bubbles && this.parent) {

            e = this;

            for (d = [e]; e.parent;) d.push(e = e.parent);

            g = d.length;

            for (e = g - 1; 0 <= e && !a.propagationStopped; e--) d[e]._dispatchEvent(a, 1 + (0 == e));

            for (e = 1; g > e && !a.propagationStopped; e++) d[e]._dispatchEvent(a, 3)

        } else this._dispatchEvent(a, 2);

        return !a.defaultPrevented

    };

    b.hasEventListener = function(a) {

        var d = this._listeners,

            e = this._captureListeners;

        return !!(d && d[a] || e && e[a])

    };

    b.willTrigger = function(a) {

        for (var d = this; d;) {

            if (d.hasEventListener(a)) return !0;

            d = d.parent

        }

        return !1

    };

    b.toString = function() {

        return "[EventDispatcher]"

    };

    b._dispatchEvent = function(a, d) {

        var e, g = 1 == d ? this._captureListeners : this._listeners;

        if (a && g && (g = g[a.type]) && (e = g.length)) {

            try {

                a.currentTarget =

                    this

            } catch (n) {}

            try {

                a.eventPhase = d

            } catch (n) {}

            a.removed = !1;

            for (var g = g.slice(), b = 0; e > b && !a.immediatePropagationStopped; b++) {

                var c = g[b];

                c.handleEvent ? c.handleEvent(a) : c(a);

                a.removed && (this.off(a.type, c, 1 == d), a.removed = !1)

            }

        }

    };

    createjs.EventDispatcher = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "Ticker cannot be instantiated.";

    }

    c.RAF_SYNCHED = "synched";

    c.RAF = "raf";

    c.TIMEOUT = "timeout";

    c.useRAF = !1;

    c.timingMode = null;

    c.maxDelta = 0;

    c.paused = !1;

    c.removeEventListener = null;

    c.removeAllEventListeners = null;

    c.dispatchEvent = null;

    c.hasEventListener = null;

    c._listeners = null;

    createjs.EventDispatcher.initialize(c);

    c._addEventListener = c.addEventListener;

    c.addEventListener = function() {

        return !c._inited && c.init(), c._addEventListener.apply(c, arguments)

    };

    c._inited = !1;

    c._startTime = 0;

    c._pausedTime =

        0;

    c._ticks = 0;

    c._pausedTicks = 0;

    c._interval = 50;

    c._lastTime = 0;

    c._times = null;

    c._tickTimes = null;

    c._timerId = null;

    c._raf = !0;

    c.setInterval = function(a) {

        c._interval = a;

        c._inited && c._setupTick()

    };

    c.getInterval = function() {

        return c._interval

    };

    c.setFPS = function(a) {

        c.setInterval(1E3 / a)

    };

    c.getFPS = function() {

        return 1E3 / c._interval

    };

    try {

        Object.defineProperties(c, {

            interval: {

                get: c.getInterval,

                set: c.setInterval

            },

            framerate: {

                get: c.getFPS,

                set: c.setFPS

            }

        })

    } catch (a) {

        console.log(a)

    }

    c.init = function() {

        c._inited || (c._inited = !0,

            c._times = [], c._tickTimes = [], c._startTime = c._getTime(), c._times.push(c._lastTime = 0), c.interval = c._interval)

    };

    c.reset = function() {

        if (c._raf) {

            var a = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;

            a && a(c._timerId)

        } else clearTimeout(c._timerId);

        c.removeAllEventListeners("tick");

        c._timerId = c._times = c._tickTimes = null;

        c._startTime = c._lastTime = c._ticks = 0;

        c._inited = !1

    };

    c.getMeasuredTickTime = function(a) {

        var d =

            0,

            e = c._tickTimes;

        if (!e || 1 > e.length) return -1;

        a = Math.min(e.length, a || 0 | c.getFPS());

        for (var g = 0; a > g; g++) d += e[g];

        return d / a

    };

    c.getMeasuredFPS = function(a) {

        var d = c._times;

        return !d || 2 > d.length ? -1 : (a = Math.min(d.length - 1, a || 0 | c.getFPS()), 1E3 / ((d[0] - d[a]) / a))

    };

    c.setPaused = function(a) {

        c.paused = a

    };

    c.getPaused = function() {

        return c.paused

    };

    c.getTime = function(a) {

        return c._startTime ? c._getTime() - (a ? c._pausedTime : 0) : -1

    };

    c.getEventTime = function(a) {

        return c._startTime ? (c._lastTime || c._startTime) - (a ? c._pausedTime : 0) :

            -1

    };

    c.getTicks = function(a) {

        return c._ticks - (a ? c._pausedTicks : 0)

    };

    c._handleSynch = function() {

        c._timerId = null;

        c._setupTick();

        c._getTime() - c._lastTime >= .97 * (c._interval - 1) && c._tick()

    };

    c._handleRAF = function() {

        c._timerId = null;

        c._setupTick();

        c._tick()

    };

    c._handleTimeout = function() {

        c._timerId = null;

        c._setupTick();

        c._tick()

    };

    c._setupTick = function() {

        if (null == c._timerId) {

            var a = c.timingMode || c.useRAF && c.RAF_SYNCHED;

            if (a == c.RAF_SYNCHED || a == c.RAF) {

                var d = window.requestAnimationFrame || window.webkitRequestAnimationFrame ||

                    window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;

                if (d) return c._timerId = d(a == c.RAF ? c._handleRAF : c._handleSynch), void(c._raf = !0)

            }

            c._raf = !1;

            c._timerId = setTimeout(c._handleTimeout, c._interval)

        }

    };

    c._tick = function() {

        var a = c.paused,

            d = c._getTime(),

            e = d - c._lastTime;

        if (c._lastTime = d, c._ticks++, a && (c._pausedTicks++, c._pausedTime += e), c.hasEventListener("tick")) {

            var g = new createjs.Event("tick"),

                b = c.maxDelta;

            g.delta = b && e > b ? b : e;

            g.paused = a;

            g.time = d;

            g.runTime = d - c._pausedTime;

            c.dispatchEvent(g)

        }

        for (c._tickTimes.unshift(c._getTime() - d); 100 < c._tickTimes.length;) c._tickTimes.pop();

        for (c._times.unshift(d); 100 < c._times.length;) c._times.pop()

    };

    var b = window.performance && (performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow);

    c._getTime = function() {

        return (b && b.call(performance) || (new Date).getTime()) - c._startTime

    };

    createjs.Ticker = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "UID cannot be instantiated";

    }

    c._nextID = 0;

    c.get = function() {

        return c._nextID++

    };

    createjs.UID = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, g, b, c, n, m, k, l, p) {

        this.Event_constructor(a, d, e);

        this.stageX = g;

        this.stageY = b;

        this.rawX = null == k ? g : k;

        this.rawY = null == l ? b : l;

        this.nativeEvent = c;

        this.pointerID = n;

        this.primary = !!m;

        this.relatedTarget = p

    }

    var b = createjs.extend(c, createjs.Event);

    b._get_localX = function() {

        return this.currentTarget.globalToLocal(this.rawX, this.rawY).x

    };

    b._get_localY = function() {

        return this.currentTarget.globalToLocal(this.rawX, this.rawY).y

    };

    b._get_isTouch = function() {

        return -1 !== this.pointerID

    };

    try {

        Object.defineProperties(b, {

            localX: {

                get: b._get_localX

            },

            localY: {

                get: b._get_localY

            },

            isTouch: {

                get: b._get_isTouch

            }

        })

    } catch (a) {}

    b.clone = function() {

        return new c(this.type, this.bubbles, this.cancelable, this.stageX, this.stageY, this.nativeEvent, this.pointerID, this.primary, this.rawX, this.rawY)

    };

    b.toString = function() {

        return "[MouseEvent (type=" + this.type + " stageX=" + this.stageX + " stageY=" + this.stageY + ")]"

    };

    createjs.MouseEvent = createjs.promote(c, "Event")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, g, b, c) {

        this.setValues(a, d, e, g, b, c)

    }

    var b = c.prototype;

    c.DEG_TO_RAD = Math.PI / 180;

    c.identity = null;

    b.setValues = function(a, d, e, g, b, c) {

        return this.a = null == a ? 1 : a, this.b = d || 0, this.c = e || 0, this.d = null == g ? 1 : g, this.tx = b || 0, this.ty = c || 0, this

    };

    b.append = function(a, d, e, g, b, c) {

        var f = this.a,

            h = this.b,

            k = this.c,

            l = this.d;

        return (1 != a || 0 != d || 0 != e || 1 != g) && (this.a = f * a + k * d, this.b = h * a + l * d, this.c = f * e + k * g, this.d = h * e + l * g), this.tx = f * b + k * c + this.tx, this.ty = h * b + l * c + this.ty, this

    };

    b.prepend = function(a, d, e,

        g, b, c) {

        var f = this.a,

            h = this.c,

            k = this.tx;

        return this.a = a * f + e * this.b, this.b = d * f + g * this.b, this.c = a * h + e * this.d, this.d = d * h + g * this.d, this.tx = a * k + e * this.ty + b, this.ty = d * k + g * this.ty + c, this

    };

    b.appendMatrix = function(a) {

        return this.append(a.a, a.b, a.c, a.d, a.tx, a.ty)

    };

    b.prependMatrix = function(a) {

        return this.prepend(a.a, a.b, a.c, a.d, a.tx, a.ty)

    };

    b.appendTransform = function(a, d, e, g, b, h, n, m, k) {

        if (b % 360) {

            var f = b * c.DEG_TO_RAD;

            b = Math.cos(f);

            f = Math.sin(f)

        } else b = 1, f = 0;

        return h || n ? (h *= c.DEG_TO_RAD, n *= c.DEG_TO_RAD, this.append(Math.cos(n),

            Math.sin(n), -Math.sin(h), Math.cos(h), a, d), this.append(b * e, f * e, -f * g, b * g, 0, 0)) : this.append(b * e, f * e, -f * g, b * g, a, d), (m || k) && (this.tx -= m * this.a + k * this.c, this.ty -= m * this.b + k * this.d), this

    };

    b.prependTransform = function(a, d, e, g, b, h, n, m, k) {

        if (b % 360) {

            var f = b * c.DEG_TO_RAD;

            b = Math.cos(f);

            f = Math.sin(f)

        } else b = 1, f = 0;

        return (m || k) && (this.tx -= m, this.ty -= k), h || n ? (h *= c.DEG_TO_RAD, n *= c.DEG_TO_RAD, this.prepend(b * e, f * e, -f * g, b * g, 0, 0), this.prepend(Math.cos(n), Math.sin(n), -Math.sin(h), Math.cos(h), a, d)) : this.prepend(b * e, f * e, -f *

            g, b * g, a, d), this

    };

    b.rotate = function(a) {

        a *= c.DEG_TO_RAD;

        var d = Math.cos(a);

        a = Math.sin(a);

        var e = this.a,

            b = this.b;

        return this.a = e * d + this.c * a, this.b = b * d + this.d * a, this.c = -e * a + this.c * d, this.d = -b * a + this.d * d, this

    };

    b.skew = function(a, d) {

        return a *= c.DEG_TO_RAD, d *= c.DEG_TO_RAD, this.append(Math.cos(d), Math.sin(d), -Math.sin(a), Math.cos(a), 0, 0), this

    };

    b.scale = function(a, d) {

        return this.a *= a, this.b *= a, this.c *= d, this.d *= d, this

    };

    b.translate = function(a, d) {

        return this.tx += this.a * a + this.c * d, this.ty += this.b * a + this.d * d, this

    };

    b.identity = function() {

        return this.a = this.d = 1, this.b = this.c = this.tx = this.ty = 0, this

    };

    b.invert = function() {

        var a = this.a,

            d = this.b,

            e = this.c,

            b = this.d,

            f = this.tx,

            c = a * b - d * e;

        return this.a = b / c, this.b = -d / c, this.c = -e / c, this.d = a / c, this.tx = (e * this.ty - b * f) / c, this.ty = -(a * this.ty - d * f) / c, this

    };

    b.isIdentity = function() {

        return 0 === this.tx && 0 === this.ty && 1 === this.a && 0 === this.b && 0 === this.c && 1 === this.d

    };

    b.equals = function(a) {

        return this.tx === a.tx && this.ty === a.ty && this.a === a.a && this.b === a.b && this.c === a.c && this.d === a.d

    };

    b.transformPoint =

        function(a, d, e) {

            return e = e || {}, e.x = a * this.a + d * this.c + this.tx, e.y = a * this.b + d * this.d + this.ty, e

        };

    b.decompose = function(a) {

        null == a && (a = {});

        a.x = this.tx;

        a.y = this.ty;

        a.scaleX = Math.sqrt(this.a * this.a + this.b * this.b);

        a.scaleY = Math.sqrt(this.c * this.c + this.d * this.d);

        var d = Math.atan2(-this.c, this.d),

            e = Math.atan2(this.b, this.a);

        return 1E-5 > Math.abs(1 - d / e) ? (a.rotation = e / c.DEG_TO_RAD, 0 > this.a && 0 <= this.d && (a.rotation += 0 >= a.rotation ? 180 : -180), a.skewX = a.skewY = 0) : (a.skewX = d / c.DEG_TO_RAD, a.skewY = e / c.DEG_TO_RAD), a

    };

    b.copy =

        function(a) {

            return this.setValues(a.a, a.b, a.c, a.d, a.tx, a.ty)

        };

    b.clone = function() {

        return new c(this.a, this.b, this.c, this.d, this.tx, this.ty)

    };

    b.toString = function() {

        return "[Matrix2D (a=" + this.a + " b=" + this.b + " c=" + this.c + " d=" + this.d + " tx=" + this.tx + " ty=" + this.ty + ")]"

    };

    c.identity = new c;

    createjs.Matrix2D = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, b, f) {

        this.setValues(a, d, e, b, f)

    }

    var b = c.prototype;

    b.setValues = function(a, d, e, b, f) {

        return this.visible = null == a ? !0 : !!a, this.alpha = null == d ? 1 : d, this.shadow = e, this.compositeOperation = b, this.matrix = f || this.matrix && this.matrix.identity() || new createjs.Matrix2D, this

    };

    b.append = function(a, d, e, b, f) {

        return this.alpha *= d, this.shadow = e || this.shadow, this.compositeOperation = b || this.compositeOperation, this.visible = this.visible && a, f && this.matrix.appendMatrix(f), this

    };

    b.prepend = function(a,

        d, e, b, f) {

        return this.alpha *= d, this.shadow = this.shadow || e, this.compositeOperation = this.compositeOperation || b, this.visible = this.visible && a, f && this.matrix.prependMatrix(f), this

    };

    b.identity = function() {

        return this.visible = !0, this.alpha = 1, this.shadow = this.compositeOperation = null, this.matrix.identity(), this

    };

    b.clone = function() {

        return new c(this.alpha, this.shadow, this.compositeOperation, this.visible, this.matrix.clone())

    };

    createjs.DisplayProps = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d) {

        this.setValues(a, d)

    }

    var b = c.prototype;

    b.setValues = function(a, d) {

        return this.x = a || 0, this.y = d || 0, this

    };

    b.copy = function(a) {

        return this.x = a.x, this.y = a.y, this

    };

    b.clone = function() {

        return new c(this.x, this.y)

    };

    b.toString = function() {

        return "[Point (x=" + this.x + " y=" + this.y + ")]"

    };

    createjs.Point = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, b) {

        this.setValues(a, d, e, b)

    }

    var b = c.prototype;

    b.setValues = function(a, d, e, b) {

        return this.x = a || 0, this.y = d || 0, this.width = e || 0, this.height = b || 0, this

    };

    b.extend = function(a, d, e, b) {

        return e = e || 0, b = b || 0, a + e > this.x + this.width && (this.width = a + e - this.x), d + b > this.y + this.height && (this.height = d + b - this.y), a < this.x && (this.width += this.x - a, this.x = a), d < this.y && (this.height += this.y - d, this.y = d), this

    };

    b.pad = function(a, d, e, b) {

        return this.x -= d, this.y -= a, this.width += d + b, this.height += a + e, this

    };

    b.copy =

        function(a) {

            return this.setValues(a.x, a.y, a.width, a.height)

        };

    b.contains = function(a, d, e, b) {

        return e = e || 0, b = b || 0, a >= this.x && a + e <= this.x + this.width && d >= this.y && d + b <= this.y + this.height

    };

    b.union = function(a) {

        return this.clone().extend(a.x, a.y, a.width, a.height)

    };

    b.intersection = function(a) {

        var d = a.x,

            e = a.y,

            b = d + a.width;

        a = e + a.height;

        return this.x > d && (d = this.x), this.y > e && (e = this.y), this.x + this.width < b && (b = this.x + this.width), this.y + this.height < a && (a = this.y + this.height), d >= b || e >= a ? null : new c(d, e, b - d, a - e)

    };

    b.intersects =

        function(a) {

            return a.x <= this.x + this.width && this.x <= a.x + a.width && a.y <= this.y + this.height && this.y <= a.y + a.height

        };

    b.isEmpty = function() {

        return 0 >= this.width || 0 >= this.height

    };

    b.clone = function() {

        return new c(this.x, this.y, this.width, this.height)

    };

    b.toString = function() {

        return "[Rectangle (x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + ")]"

    };

    createjs.Rectangle = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, b, f, c, n) {

        a.addEventListener && (this.target = a, this.overLabel = null == e ? "over" : e, this.outLabel = null == d ? "out" : d, this.downLabel = null == b ? "down" : b, this.play = f, this._isPressed = !1, this._isOver = !1, this._enabled = !1, a.mouseChildren = !1, this.enabled = !0, this.handleEvent({}), c && (n && (c.actionsEnabled = !1, c.gotoAndStop && c.gotoAndStop(n)), a.hitArea = c))

    }

    var b = c.prototype;

    b.setEnabled = function(a) {

        if (a != this._enabled) {

            var d = this.target;

            (this._enabled = a) ? (d.cursor = "pointer", d.addEventListener("rollover",

                this), d.addEventListener("rollout", this), d.addEventListener("mousedown", this), d.addEventListener("pressup", this), d._reset && (d.__reset = d._reset, d._reset = this._reset)) : (d.cursor = null, d.removeEventListener("rollover", this), d.removeEventListener("rollout", this), d.removeEventListener("mousedown", this), d.removeEventListener("pressup", this), d.__reset && (d._reset = d.__reset, delete d.__reset))

        }

    };

    b.getEnabled = function() {

        return this._enabled

    };

    try {

        Object.defineProperties(b, {

            enabled: {

                get: b.getEnabled,

                set: b.setEnabled

            }

        })

    } catch (a) {}

    b.toString =

        function() {

            return "[ButtonHelper]"

        };

    b.handleEvent = function(a) {

        var d, e = this.target;

        a = a.type;

        "mousedown" == a ? (this._isPressed = !0, d = this.downLabel) : "pressup" == a ? (this._isPressed = !1, d = this._isOver ? this.overLabel : this.outLabel) : "rollover" == a ? (this._isOver = !0, d = this._isPressed ? this.downLabel : this.overLabel) : (this._isOver = !1, d = this._isPressed ? this.overLabel : this.outLabel);

        this.play ? e.gotoAndPlay && e.gotoAndPlay(d) : e.gotoAndStop && e.gotoAndStop(d)

    };

    b._reset = function() {

        var a = this.paused;

        this.__reset();

        this.paused =

            a

    };

    createjs.ButtonHelper = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d, e, b) {

        this.color = a || "black";

        this.offsetX = d || 0;

        this.offsetY = e || 0;

        this.blur = b || 0

    }

    var b = c.prototype;

    c.identity = new c("transparent", 0, 0, 0);

    b.toString = function() {

        return "[Shadow]"

    };

    b.clone = function() {

        return new c(this.color, this.offsetX, this.offsetY, this.blur)

    };

    createjs.Shadow = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.EventDispatcher_constructor();

        this.complete = !0;

        this.framerate = 0;

        this._data = this._images = this._frames = this._animations = null;

        this._margin = this._spacing = this._regY = this._regX = this._numFrames = this._frameWidth = this._frameHeight = this._loadCount = 0;

        this._parseData(a)

    }

    var b = createjs.extend(c, createjs.EventDispatcher);

    b.getAnimations = function() {

        return this._animations.slice()

    };

    try {

        Object.defineProperties(b, {

            animations: {

                get: b.getAnimations

            }

        })

    } catch (a) {}

    b.getNumFrames = function(a) {

        if (null ==

            a) return this._frames ? this._frames.length : this._numFrames || 0;

        a = this._data[a];

        return null == a ? 0 : a.frames.length

    };

    b.getAnimation = function(a) {

        return this._data[a]

    };

    b.getFrame = function(a) {

        var d;

        return this._frames && (d = this._frames[a]) ? d : null

    };

    b.getFrameBounds = function(a, d) {

        var e = this.getFrame(a);

        return e ? (d || new createjs.Rectangle).setValues(-e.regX, -e.regY, e.rect.width, e.rect.height) : null

    };

    b.toString = function() {

        return "[SpriteSheet]"

    };

    b.clone = function() {

        throw "SpriteSheet cannot be cloned.";

    };

    b._parseData =

        function(a) {

            var d, e, b;

            if (null != a) {

                if (this.framerate = a.framerate || 0, a.images && 0 < (e = a.images.length))

                    for (b = this._images = [], d = 0; e > d; d++) {

                        var f = a.images[d];

                        if ("string" == typeof f) {

                            var c = f,

                                f = document.createElement("img");

                            f.src = c

                        }

                        b.push(f);

                        f.getContext || f.naturalWidth || (this._loadCount++, this.complete = !1, function(a, d) {

                            f.onload = function() {

                                a._handleImageLoad(d)

                            }

                        }(this, c), function(a, d) {

                            f.onerror = function() {

                                a._handleImageError(d)

                            }

                        }(this, c))

                    }

                if (null != a.frames)

                    if (Array.isArray(a.frames))

                        for (this._frames = [], b =

                            a.frames, d = 0, e = b.length; e > d; d++) c = b[d], this._frames.push({

                            image: this._images[c[4] ? c[4] : 0],

                            rect: new createjs.Rectangle(c[0], c[1], c[2], c[3]),

                            regX: c[5] || 0,

                            regY: c[6] || 0

                        });

                    else e = a.frames, this._frameWidth = e.width, this._frameHeight = e.height, this._regX = e.regX || 0, this._regY = e.regY || 0, this._spacing = e.spacing || 0, this._margin = e.margin || 0, this._numFrames = e.count, 0 == this._loadCount && this._calculateFrames();

                if (this._animations = [], null != (e = a.animations)) {

                    this._data = {};

                    for (var n in e) {

                        a = {

                            name: n

                        };

                        c = e[n];

                        if ("number" ==

                            typeof c) b = a.frames = [c];

                        else if (Array.isArray(c))

                            if (1 == c.length) a.frames = [c[0]];

                            else

                                for (a.speed = c[3], a.next = c[2], b = a.frames = [], d = c[0]; d <= c[1]; d++) b.push(d);

                        else a.speed = c.speed, a.next = c.next, d = c.frames, b = a.frames = "number" == typeof d ? [d] : d.slice(0);

                        !0 !== a.next && void 0 !== a.next || (a.next = n);

                        (!1 === a.next || 2 > b.length && a.next == n) && (a.next = null);

                        a.speed || (a.speed = 1);

                        this._animations.push(n);

                        this._data[n] = a

                    }

                }

            }

        };

    b._handleImageLoad = function() {

        0 == --this._loadCount && (this._calculateFrames(), this.complete = !0,

            this.dispatchEvent("complete"))

    };

    b._handleImageError = function(a) {

        var d = new createjs.Event("error");

        d.src = a;

        this.dispatchEvent(d);

        0 == --this._loadCount && this.dispatchEvent("complete")

    };

    b._calculateFrames = function() {

        if (!this._frames && 0 != this._frameWidth) {

            this._frames = [];

            var a = this._numFrames || 1E5,

                d = 0,

                e = this._frameWidth,

                b = this._frameHeight,

                c = this._spacing,

                h = this._margin,

                n = 0,

                m = this._images;

            a: for (; n < m.length; n++)

                for (var k = m[n], l = k.width, p = k.height, r = h; p - h - b >= r;) {

                    for (var q = h; l - h - e >= q;) {

                        if (d >= a) break a;

                        d++;

                        this._frames.push({

                            image: k,

                            rect: new createjs.Rectangle(q, r, e, b),

                            regX: this._regX,

                            regY: this._regY

                        });

                        q += e + c

                    }

                    r += b + c

                }

            this._numFrames = d

        }

    };

    createjs.SpriteSheet = createjs.promote(c, "EventDispatcher")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this._oldStrokeDash = this._strokeDash = this._oldStrokeStyle = this._strokeStyle = this._stroke = this.command = null;

        this._strokeIgnoreScale = !1;

        this._fill = null;

        this._instructions = [];

        this._commitIndex = 0;

        this._activeInstructions = [];

        this._dirty = !1;

        this._storeIndex = 0;

        this.clear()

    }

    var b = c.prototype;

    c.getRGB = function(a, e, b, c) {

        return null != a && null == b && (c = e, b = 255 & a, e = a >> 8 & 255, a = a >> 16 & 255), null == c ? "rgb(" + a + "," + e + "," + b + ")" : "rgba(" + a + "," + e + "," + b + "," + c + ")"

    };

    c.getHSL = function(a, e, b, c) {

        return null ==

            c ? "hsl(" + a % 360 + "," + e + "%," + b + "%)" : "hsla(" + a % 360 + "," + e + "%," + b + "%," + c + ")"

    };

    c.BASE_64 = {

        A: 0,

        B: 1,

        C: 2,

        D: 3,

        E: 4,

        F: 5,

        G: 6,

        H: 7,

        I: 8,

        J: 9,

        K: 10,

        L: 11,

        M: 12,

        N: 13,

        O: 14,

        P: 15,

        Q: 16,

        R: 17,

        S: 18,

        T: 19,

        U: 20,

        V: 21,

        W: 22,

        X: 23,

        Y: 24,

        Z: 25,

        a: 26,

        b: 27,

        c: 28,

        d: 29,

        e: 30,

        f: 31,

        g: 32,

        h: 33,

        i: 34,

        j: 35,

        k: 36,

        l: 37,

        m: 38,

        n: 39,

        o: 40,

        p: 41,

        q: 42,

        r: 43,

        s: 44,

        t: 45,

        u: 46,

        v: 47,

        w: 48,

        x: 49,

        y: 50,

        z: 51,

        0: 52,

        1: 53,

        2: 54,

        3: 55,

        4: 56,

        5: 57,

        6: 58,

        7: 59,

        8: 60,

        9: 61,

        "+": 62,

        "/": 63

    };

    c.STROKE_CAPS_MAP = ["butt", "round", "square"];

    c.STROKE_JOINTS_MAP = ["miter", "round", "bevel"];

    var a = createjs.createCanvas ?

        createjs.createCanvas() : document.createElement("canvas");

    a.getContext && (c._ctx = a.getContext("2d"), a.width = a.height = 1);

    b.getInstructions = function() {

        return this._updateInstructions(), this._instructions

    };

    try {

        Object.defineProperties(b, {

            instructions: {

                get: b.getInstructions

            }

        })

    } catch (d) {}

    b.isEmpty = function() {

        return !(this._instructions.length || this._activeInstructions.length)

    };

    b.draw = function(a, e) {

        this._updateInstructions();

        for (var d = this._instructions, b = this._storeIndex, c = d.length; c > b; b++) d[b].exec(a, e)

    };

    b.drawAsPath = function(a) {

        this._updateInstructions();

        for (var d, b = this._instructions, c = this._storeIndex, h = b.length; h > c; c++)!1 !== (d = b[c]).path && d.exec(a)

    };

    b.moveTo = function(a, e) {

        return this.append(new c.MoveTo(a, e), !0)

    };

    b.lineTo = function(a, e) {

        return this.append(new c.LineTo(a, e))

    };

    b.arcTo = function(a, e, b, f, h) {

        return this.append(new c.ArcTo(a, e, b, f, h))

    };

    b.arc = function(a, e, b, f, h, n) {

        return this.append(new c.Arc(a, e, b, f, h, n))

    };

    b.quadraticCurveTo = function(a, e, b, f) {

        return this.append(new c.QuadraticCurveTo(a,

            e, b, f))

    };

    b.bezierCurveTo = function(a, e, b, f, h, n) {

        return this.append(new c.BezierCurveTo(a, e, b, f, h, n))

    };

    b.rect = function(a, e, b, f) {

        return this.append(new c.Rect(a, e, b, f))

    };

    b.closePath = function() {

        return this._activeInstructions.length ? this.append(new c.ClosePath) : this

    };

    b.clear = function() {

        return this._instructions.length = this._activeInstructions.length = this._commitIndex = 0, this._strokeStyle = this._oldStrokeStyle = this._stroke = this._fill = this._strokeDash = this._oldStrokeDash = null, this._dirty = this._strokeIgnoreScale = !1, this

    };

    b.beginFill = function(a) {

        return this._setFill(a ? new c.Fill(a) : null)

    };

    b.beginLinearGradientFill = function(a, e, b, f, h, n) {

        return this._setFill((new c.Fill).linearGradient(a, e, b, f, h, n))

    };

    b.beginRadialGradientFill = function(a, e, b, f, h, n, m, k) {

        return this._setFill((new c.Fill).radialGradient(a, e, b, f, h, n, m, k))

    };

    b.beginBitmapFill = function(a, e, b) {

        return this._setFill((new c.Fill(null, b)).bitmap(a, e))

    };

    b.endFill = function() {

        return this.beginFill()

    };

    b.setStrokeStyle = function(a, e, b, f, h) {

        return this._updateInstructions(!0),

            this._strokeStyle = this.command = new c.StrokeStyle(a, e, b, f, h), this._stroke && (this._stroke.ignoreScale = h), this._strokeIgnoreScale = h, this

    };

    b.setStrokeDash = function(a, e) {

        return this._updateInstructions(!0), this._strokeDash = this.command = new c.StrokeDash(a, e), this

    };

    b.beginStroke = function(a) {

        return this._setStroke(a ? new c.Stroke(a) : null)

    };

    b.beginLinearGradientStroke = function(a, e, b, f, h, n) {

        return this._setStroke((new c.Stroke).linearGradient(a, e, b, f, h, n))

    };

    b.beginRadialGradientStroke = function(a, e, b, f, h, n, m,

        k) {

        return this._setStroke((new c.Stroke).radialGradient(a, e, b, f, h, n, m, k))

    };

    b.beginBitmapStroke = function(a, e) {

        return this._setStroke((new c.Stroke).bitmap(a, e))

    };

    b.endStroke = function() {

        return this.beginStroke()

    };

    b.curveTo = b.quadraticCurveTo;

    b.drawRect = b.rect;

    b.drawRoundRect = function(a, e, b, c, h) {

        return this.drawRoundRectComplex(a, e, b, c, h, h, h, h)

    };

    b.drawRoundRectComplex = function(a, e, b, f, h, n, m, k) {

        return this.append(new c.RoundRect(a, e, b, f, h, n, m, k))

    };

    b.drawCircle = function(a, e, b) {

        return this.append(new c.Circle(a,

            e, b))

    };

    b.drawEllipse = function(a, e, b, f) {

        return this.append(new c.Ellipse(a, e, b, f))

    };

    b.drawPolyStar = function(a, e, b, f, h, n) {

        return this.append(new c.PolyStar(a, e, b, f, h, n))

    };

    b.append = function(a, e) {

        return this._activeInstructions.push(a), this.command = a, e || (this._dirty = !0), this

    };

    b.decodePath = function(a) {

        for (var d = [this.moveTo, this.lineTo, this.quadraticCurveTo, this.bezierCurveTo, this.closePath], b = [2, 2, 4, 6, 0], f = 0, h = a.length, n = [], m = 0, k = 0, l = c.BASE_64; h > f;) {

            var p = a.charAt(f),

                r = l[p],

                q = r >> 3,

                t = d[q];

            if (!t || 3 & r) throw "bad path data (@" +

                f + "): " + p;

            p = b[q];

            q || (m = k = 0);

            n.length = 0;

            f++;

            r = (r >> 2 & 1) + 2;

            for (q = 0; p > q; q++) {

                var u = l[a.charAt(f)],

                    v = u >> 5 ? -1 : 1,

                    u = (31 & u) << 6 | l[a.charAt(f + 1)];

                3 == r && (u = u << 6 | l[a.charAt(f + 2)]);

                u = v * u / 10;

                q % 2 ? m = u += m : k = u += k;

                n[q] = u;

                f += r

            }

            t.apply(this, n)

        }

        return this

    };

    b.store = function() {

        return this._updateInstructions(!0), this._storeIndex = this._instructions.length, this

    };

    b.unstore = function() {

        return this._storeIndex = 0, this

    };

    b.clone = function() {

        var a = new c;

        return a.command = this.command, a._stroke = this._stroke, a._strokeStyle = this._strokeStyle,

            a._strokeDash = this._strokeDash, a._strokeIgnoreScale = this._strokeIgnoreScale, a._fill = this._fill, a._instructions = this._instructions.slice(), a._commitIndex = this._commitIndex, a._activeInstructions = this._activeInstructions.slice(), a._dirty = this._dirty, a._storeIndex = this._storeIndex, a

    };

    b.toString = function() {

        return "[Graphics]"

    };

    b.mt = b.moveTo;

    b.lt = b.lineTo;

    b.at = b.arcTo;

    b.bt = b.bezierCurveTo;

    b.qt = b.quadraticCurveTo;

    b.a = b.arc;

    b.r = b.rect;

    b.cp = b.closePath;

    b.c = b.clear;

    b.f = b.beginFill;

    b.lf = b.beginLinearGradientFill;

    b.rf = b.beginRadialGradientFill;

    b.bf = b.beginBitmapFill;

    b.ef = b.endFill;

    b.ss = b.setStrokeStyle;

    b.sd = b.setStrokeDash;

    b.s = b.beginStroke;

    b.ls = b.beginLinearGradientStroke;

    b.rs = b.beginRadialGradientStroke;

    b.bs = b.beginBitmapStroke;

    b.es = b.endStroke;

    b.dr = b.drawRect;

    b.rr = b.drawRoundRect;

    b.rc = b.drawRoundRectComplex;

    b.dc = b.drawCircle;

    b.de = b.drawEllipse;

    b.dp = b.drawPolyStar;

    b.p = b.decodePath;

    b._updateInstructions = function(a) {

        var d = this._instructions,

            b = this._activeInstructions,

            f = this._commitIndex;

        if (this._dirty && b.length) {

            d.length =

                f;

            d.push(c.beginCmd);

            var f = b.length,

                h = d.length;

            d.length = h + f;

            for (var n = 0; f > n; n++) d[n + h] = b[n];

            this._fill && d.push(this._fill);

            this._stroke && (this._strokeDash !== this._oldStrokeDash && (this._oldStrokeDash = this._strokeDash, d.push(this._strokeDash)), this._strokeStyle !== this._oldStrokeStyle && (this._oldStrokeStyle = this._strokeStyle, d.push(this._strokeStyle)), d.push(this._stroke));

            this._dirty = !1

        }

        a && (b.length = 0, this._commitIndex = d.length)

    };

    b._setFill = function(a) {

        return this._updateInstructions(!0), this.command =

            this._fill = a, this

    };

    b._setStroke = function(a) {

        return this._updateInstructions(!0), (this.command = this._stroke = a) && (a.ignoreScale = this._strokeIgnoreScale), this

    };

    (c.LineTo = function(a, e) {

        this.x = a;

        this.y = e

    }).prototype.exec = function(a) {

        a.lineTo(this.x, this.y)

    };

    (c.MoveTo = function(a, e) {

        this.x = a;

        this.y = e

    }).prototype.exec = function(a) {

        a.moveTo(this.x, this.y)

    };

    (c.ArcTo = function(a, e, b, c, h) {

        this.x1 = a;

        this.y1 = e;

        this.x2 = b;

        this.y2 = c;

        this.radius = h

    }).prototype.exec = function(a) {

        a.arcTo(this.x1, this.y1, this.x2, this.y2,

            this.radius)

    };

    (c.Arc = function(a, e, b, c, h, n) {

        this.x = a;

        this.y = e;

        this.radius = b;

        this.startAngle = c;

        this.endAngle = h;

        this.anticlockwise = !!n

    }).prototype.exec = function(a) {

        a.arc(this.x, this.y, this.radius, this.startAngle, this.endAngle, this.anticlockwise)

    };

    (c.QuadraticCurveTo = function(a, e, b, c) {

        this.cpx = a;

        this.cpy = e;

        this.x = b;

        this.y = c

    }).prototype.exec = function(a) {

        a.quadraticCurveTo(this.cpx, this.cpy, this.x, this.y)

    };

    (c.BezierCurveTo = function(a, e, b, c, h, n) {

        this.cp1x = a;

        this.cp1y = e;

        this.cp2x = b;

        this.cp2y = c;

        this.x = h;

        this.y =

            n

    }).prototype.exec = function(a) {

        a.bezierCurveTo(this.cp1x, this.cp1y, this.cp2x, this.cp2y, this.x, this.y)

    };

    (c.Rect = function(a, e, b, c) {

        this.x = a;

        this.y = e;

        this.w = b;

        this.h = c

    }).prototype.exec = function(a) {

        a.rect(this.x, this.y, this.w, this.h)

    };

    (c.ClosePath = function() {}).prototype.exec = function(a) {

        a.closePath()

    };

    (c.BeginPath = function() {}).prototype.exec = function(a) {

        a.beginPath()

    };

    b = (c.Fill = function(a, e) {

        this.style = a;

        this.matrix = e

    }).prototype;

    b.exec = function(a) {

        if (this.style) {

            a.fillStyle = this.style;

            var d = this.matrix;

            d && (a.save(), a.transform(d.a, d.b, d.c, d.d, d.tx, d.ty));

            a.fill();

            d && a.restore()

        }

    };

    b.linearGradient = function(a, e, b, f, h, n) {

        for (var d = this.style = c._ctx.createLinearGradient(b, f, h, n), g = 0, l = a.length; l > g; g++) d.addColorStop(e[g], a[g]);

        return d.props = {

            colors: a,

            ratios: e,

            x0: b,

            y0: f,

            x1: h,

            y1: n,

            type: "linear"

        }, this

    };

    b.radialGradient = function(a, e, b, f, h, n, m, k) {

        for (var d = this.style = c._ctx.createRadialGradient(b, f, h, n, m, k), g = 0, r = a.length; r > g; g++) d.addColorStop(e[g], a[g]);

        return d.props = {

            colors: a,

            ratios: e,

            x0: b,

            y0: f,

            r0: h,

            x1: n,

            y1: m,

            r1: k,

            type: "radial"

        }, this

    };

    b.bitmap = function(a, e) {

        if (a.naturalWidth || a.getContext || 2 <= a.readyState)(this.style = c._ctx.createPattern(a, e || "")).props = {

            image: a,

            repetition: e,

            type: "bitmap"

        };

        return this

    };

    b.path = !1;

    b = (c.Stroke = function(a, e) {

        this.style = a;

        this.ignoreScale = e

    }).prototype;

    b.exec = function(a) {

        this.style && (a.strokeStyle = this.style, this.ignoreScale && (a.save(), a.setTransform(1, 0, 0, 1, 0, 0)), a.stroke(), this.ignoreScale && a.restore())

    };

    b.linearGradient = c.Fill.prototype.linearGradient;

    b.radialGradient =

        c.Fill.prototype.radialGradient;

    b.bitmap = c.Fill.prototype.bitmap;

    b.path = !1;

    b = (c.StrokeStyle = function(a, e, b, c, h) {

        this.width = a;

        this.caps = e;

        this.joints = b;

        this.miterLimit = c;

        this.ignoreScale = h

    }).prototype;

    b.exec = function(a) {

        a.lineWidth = null == this.width ? "1" : this.width;

        a.lineCap = null == this.caps ? "butt" : isNaN(this.caps) ? this.caps : c.STROKE_CAPS_MAP[this.caps];

        a.lineJoin = null == this.joints ? "miter" : isNaN(this.joints) ? this.joints : c.STROKE_JOINTS_MAP[this.joints];

        a.miterLimit = null == this.miterLimit ? "10" : this.miterLimit;

        a.ignoreScale = null == this.ignoreScale ? !1 : this.ignoreScale

    };

    b.path = !1;

    (c.StrokeDash = function(a, e) {

        this.segments = a;

        this.offset = e || 0

    }).prototype.exec = function(a) {

        a.setLineDash && (a.setLineDash(this.segments || c.StrokeDash.EMPTY_SEGMENTS), a.lineDashOffset = this.offset || 0)

    };

    c.StrokeDash.EMPTY_SEGMENTS = [];

    (c.RoundRect = function(a, e, b, c, h, n, m, k) {

        this.x = a;

        this.y = e;

        this.w = b;

        this.h = c;

        this.radiusTL = h;

        this.radiusTR = n;

        this.radiusBR = m;

        this.radiusBL = k

    }).prototype.exec = function(a) {

        var d = (p > l ? l : p) / 2,

            b = 0,

            c = 0,

            h = 0,

            n = 0,

            m =

            this.x,

            k = this.y,

            l = this.w,

            p = this.h,

            r = this.radiusTL,

            q = this.radiusTR,

            t = this.radiusBR,

            u = this.radiusBL;

        0 > r && (r *= b = -1);

        r > d && (r = d);

        0 > q && (q *= c = -1);

        q > d && (q = d);

        0 > t && (t *= h = -1);

        t > d && (t = d);

        0 > u && (u *= n = -1);

        u > d && (u = d);

        a.moveTo(m + l - q, k);

        a.arcTo(m + l + q * c, k - q * c, m + l, k + q, q);

        a.lineTo(m + l, k + p - t);

        a.arcTo(m + l + t * h, k + p + t * h, m + l - t, k + p, t);

        a.lineTo(m + u, k + p);

        a.arcTo(m - u * n, k + p + u * n, m, k + p - u, u);

        a.lineTo(m, k + r);

        a.arcTo(m - r * b, k - r * b, m + r, k, r);

        a.closePath()

    };

    (c.Circle = function(a, e, b) {

        this.x = a;

        this.y = e;

        this.radius = b

    }).prototype.exec = function(a) {

        a.arc(this.x,

            this.y, this.radius, 0, 2 * Math.PI)

    };

    (c.Ellipse = function(a, e, b, c) {

        this.x = a;

        this.y = e;

        this.w = b;

        this.h = c

    }).prototype.exec = function(a) {

        var d = this.x,

            b = this.y,

            c = this.w,

            h = this.h,

            n = c / 2 * .5522848,

            m = h / 2 * .5522848,

            k = d + c,

            l = b + h,

            c = d + c / 2,

            h = b + h / 2;

        a.moveTo(d, h);

        a.bezierCurveTo(d, h - m, c - n, b, c, b);

        a.bezierCurveTo(c + n, b, k, h - m, k, h);

        a.bezierCurveTo(k, h + m, c + n, l, c, l);

        a.bezierCurveTo(c - n, l, d, h + m, d, h)

    };

    (c.PolyStar = function(a, e, b, c, h, n) {

        this.x = a;

        this.y = e;

        this.radius = b;

        this.sides = c;

        this.pointSize = h;

        this.angle = n

    }).prototype.exec = function(a) {

        var d =

            this.x,

            b = this.y,

            c = this.radius,

            h = (this.angle || 0) / 180 * Math.PI,

            n = this.sides,

            m = 1 - (this.pointSize || 0),

            k = Math.PI / n;

        a.moveTo(d + Math.cos(h) * c, b + Math.sin(h) * c);

        for (var l = 0; n > l; l++) h += k, 1 != m && a.lineTo(d + Math.cos(h) * c * m, b + Math.sin(h) * c * m), h += k, a.lineTo(d + Math.cos(h) * c, b + Math.sin(h) * c);

        a.closePath()

    };

    c.beginCmd = new c.BeginPath;

    createjs.Graphics = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this.EventDispatcher_constructor();

        this.alpha = 1;

        this.cacheCanvas = null;

        this.cacheID = 0;

        this.id = createjs.UID.get();

        this.tickEnabled = this.mouseEnabled = !0;

        this.parent = this.name = null;

        this.rotation = this.regY = this.regX = 0;

        this.scaleY = this.scaleX = 1;

        this.skewY = this.skewX = 0;

        this.shadow = null;

        this.visible = !0;

        this.y = this.x = 0;

        this.compositeOperation = this.transformMatrix = null;

        this.snapToPixel = !0;

        this.cursor = this.hitArea = this.mask = this.filters = null;

        this._filterOffsetY = this._filterOffsetX = this._cacheOffsetY =

            this._cacheOffsetX = 0;

        this._cacheScale = 1;

        this._cacheDataURLID = 0;

        this._cacheDataURL = null;

        this._props = new createjs.DisplayProps;

        this._rectangle = new createjs.Rectangle;

        this._bounds = null

    }

    var b = createjs.extend(c, createjs.EventDispatcher);

    c._MOUSE_EVENTS = "click dblclick mousedown mouseout mouseover pressmove pressup rollout rollover".split(" ");

    c.suppressCrossDomainErrors = !1;

    c._snapToPixelEnabled = !1;

    var a = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas");

    a.getContext && (c._hitTestCanvas =

        a, c._hitTestContext = a.getContext("2d"), a.width = a.height = 1);

    c._nextCacheID = 1;

    b.getStage = function() {

        for (var a = this, e = createjs.Stage; a.parent;) a = a.parent;

        return a instanceof e ? a : null

    };

    try {

        Object.defineProperties(b, {

            stage: {

                get: b.getStage

            }

        })

    } catch (d) {}

    b.isVisible = function() {

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY)

    };

    b.draw = function(a, e) {

        var d = this.cacheCanvas;

        if (e || !d) return !1;

        var b = this._cacheScale;

        return a.drawImage(d, this._cacheOffsetX + this._filterOffsetX, this._cacheOffsetY +

            this._filterOffsetY, d.width / b, d.height / b), !0

    };

    b.updateContext = function(a) {

        var d = this.mask,

            b = this._props.matrix;

        d && d.graphics && !d.graphics.isEmpty() && (d.getMatrix(b), a.transform(b.a, b.b, b.c, b.d, b.tx, b.ty), d.graphics.drawAsPath(a), a.clip(), b.invert(), a.transform(b.a, b.b, b.c, b.d, b.tx, b.ty));

        this.getMatrix(b);

        var d = b.tx,

            f = b.ty;

        c._snapToPixelEnabled && this.snapToPixel && (d = d + (0 > d ? -.5 : .5) | 0, f = f + (0 > f ? -.5 : .5) | 0);

        a.transform(b.a, b.b, b.c, b.d, d, f);

        a.globalAlpha *= this.alpha;

        this.compositeOperation && (a.globalCompositeOperation =

            this.compositeOperation);

        this.shadow && this._applyShadow(a, this.shadow)

    };

    b.cache = function(a, e, b, c, h) {

        h = h || 1;

        this.cacheCanvas || (this.cacheCanvas = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas"));

        this._cacheWidth = b;

        this._cacheHeight = c;

        this._cacheOffsetX = a;

        this._cacheOffsetY = e;

        this._cacheScale = h;

        this.updateCache()

    };

    b.updateCache = function(a) {

        var d = this.cacheCanvas;

        if (!d) throw "cache() must be called before updateCache()";

        var b = this._cacheScale,

            f = this._cacheOffsetX * b,

            h = this._cacheOffsetY *

            b,

            n = this._cacheWidth,

            m = this._cacheHeight,

            k = d.getContext("2d"),

            l = this._getFilterBounds(),

            f = f + (this._filterOffsetX = l.x),

            h = h + (this._filterOffsetY = l.y),

            n = Math.ceil(n * b) + l.width,

            m = Math.ceil(m * b) + l.height;

        n != d.width || m != d.height ? (d.width = n, d.height = m) : a || k.clearRect(0, 0, n + 1, m + 1);

        k.save();

        k.globalCompositeOperation = a;

        k.setTransform(b, 0, 0, b, -f, -h);

        this.draw(k, !0);

        this._applyFilters();

        k.restore();

        this.cacheID = c._nextCacheID++

    };

    b.uncache = function() {

        this._cacheDataURL = this.cacheCanvas = null;

        this.cacheID = this._cacheOffsetX =

            this._cacheOffsetY = this._filterOffsetX = this._filterOffsetY = 0;

        this._cacheScale = 1

    };

    b.getCacheDataURL = function() {

        return this.cacheCanvas ? (this.cacheID != this._cacheDataURLID && (this._cacheDataURL = this.cacheCanvas.toDataURL()), this._cacheDataURL) : null

    };

    b.localToGlobal = function(a, e, b) {

        return this.getConcatenatedMatrix(this._props.matrix).transformPoint(a, e, b || new createjs.Point)

    };

    b.globalToLocal = function(a, e, b) {

        return this.getConcatenatedMatrix(this._props.matrix).invert().transformPoint(a, e, b || new createjs.Point)

    };

    b.localToLocal = function(a, e, b, c) {

        return c = this.localToGlobal(a, e, c), b.globalToLocal(c.x, c.y, c)

    };

    b.setTransform = function(a, e, b, c, h, n, m, k, l) {

        return this.x = a || 0, this.y = e || 0, this.scaleX = null == b ? 1 : b, this.scaleY = null == c ? 1 : c, this.rotation = h || 0, this.skewX = n || 0, this.skewY = m || 0, this.regX = k || 0, this.regY = l || 0, this

    };

    b.getMatrix = function(a) {

        a = a && a.identity() || new createjs.Matrix2D;

        return this.transformMatrix ? a.copy(this.transformMatrix) : a.appendTransform(this.x, this.y, this.scaleX, this.scaleY, this.rotation, this.skewX,

            this.skewY, this.regX, this.regY)

    };

    b.getConcatenatedMatrix = function(a) {

        var d = this;

        for (a = this.getMatrix(a); d = d.parent;) a.prependMatrix(d.getMatrix(d._props.matrix));

        return a

    };

    b.getConcatenatedDisplayProps = function(a) {

        a = a ? a.identity() : new createjs.DisplayProps;

        var d = this,

            b = d.getMatrix(a.matrix);

        do a.prepend(d.visible, d.alpha, d.shadow, d.compositeOperation), d != this && b.prependMatrix(d.getMatrix(d._props.matrix)); while (d = d.parent);

        return a

    };

    b.hitTest = function(a, e) {

        var d = c._hitTestContext;

        d.setTransform(1,

            0, 0, 1, -a, -e);

        this.draw(d);

        var b = this._testHit(d);

        return d.setTransform(1, 0, 0, 1, 0, 0), d.clearRect(0, 0, 2, 2), b

    };

    b.set = function(a) {

        for (var d in a) this[d] = a[d];

        return this

    };

    b.getBounds = function() {

        if (this._bounds) return this._rectangle.copy(this._bounds);

        var a = this.cacheCanvas;

        if (a) {

            var e = this._cacheScale;

            return this._rectangle.setValues(this._cacheOffsetX, this._cacheOffsetY, a.width / e, a.height / e)

        }

        return null

    };

    b.getTransformedBounds = function() {

        return this._getBounds()

    };

    b.setBounds = function(a, e, b, c) {

        null ==

            a && (this._bounds = a);

        this._bounds = (this._bounds || new createjs.Rectangle).setValues(a, e, b, c)

    };

    b.clone = function() {

        return this._cloneProps(new c)

    };

    b.toString = function() {

        return "[DisplayObject (name=" + this.name + ")]"

    };

    b._cloneProps = function(a) {

        return a.alpha = this.alpha, a.mouseEnabled = this.mouseEnabled, a.tickEnabled = this.tickEnabled, a.name = this.name, a.regX = this.regX, a.regY = this.regY, a.rotation = this.rotation, a.scaleX = this.scaleX, a.scaleY = this.scaleY, a.shadow = this.shadow, a.skewX = this.skewX, a.skewY = this.skewY,

            a.visible = this.visible, a.x = this.x, a.y = this.y, a.compositeOperation = this.compositeOperation, a.snapToPixel = this.snapToPixel, a.filters = null == this.filters ? null : this.filters.slice(0), a.mask = this.mask, a.hitArea = this.hitArea, a.cursor = this.cursor, a._bounds = this._bounds, a

    };

    b._applyShadow = function(a, e) {

        e = e || Shadow.identity;

        a.shadowColor = e.color;

        a.shadowOffsetX = e.offsetX;

        a.shadowOffsetY = e.offsetY;

        a.shadowBlur = e.blur

    };

    b._tick = function(a) {

        var d = this._listeners;

        d && d.tick && (a.target = null, a.propagationStopped = a.immediatePropagationStopped = !1, this.dispatchEvent(a))

    };

    b._testHit = function(a) {

        try {

            var d = 1 < a.getImageData(0, 0, 1, 1).data[3]

        } catch (g) {

            if (!c.suppressCrossDomainErrors) throw "An error has occurred. This is most likely due to security restrictions on reading canvas pixel data with local or cross-domain images.";

        }

        return d

    };

    b._applyFilters = function() {

        if (this.filters && 0 != this.filters.length && this.cacheCanvas)

            for (var a = this.filters.length, e = this.cacheCanvas.getContext("2d"), b = this.cacheCanvas.width, c = this.cacheCanvas.height, h = 0; a > h; h++) this.filters[h].applyFilter(e,

                0, 0, b, c)

    };

    b._getFilterBounds = function() {

        var a, e = this.filters,

            b = this._rectangle.setValues(0, 0, 0, 0);

        if (!e || !(a = e.length)) return b;

        for (e = 0; a > e; e++) {

            var c = this.filters[e];

            c.getBounds && c.getBounds(b)

        }

        return b

    };

    b._getBounds = function(a, e) {

        return this._transformBounds(this.getBounds(), a, e)

    };

    b._transformBounds = function(a, e, b) {

        if (!a) return a;

        var d = a.x,

            c = a.y,

            g = a.width,

            m = a.height,

            k = this._props.matrix,

            k = b ? k.identity() : this.getMatrix(k);

        (d || c) && k.appendTransform(0, 0, 1, 1, 0, 0, 0, -d, -c);

        e && k.prependMatrix(e);

        e = g * k.a;

        g *= k.b;

        b = m * k.c;

        var m = m * k.d,

            l = k.tx,

            k = k.ty,

            p = l,

            r = l,

            q = k,

            t = k;

        return (d = e + l) < p ? p = d : d > r && (r = d), (d = e + b + l) < p ? p = d : d > r && (r = d), (d = b + l) < p ? p = d : d > r && (r = d), (c = g + k) < q ? q = c : c > t && (t = c), (c = g + m + k) < q ? q = c : c > t && (t = c), (c = m + k) < q ? q = c : c > t && (t = c), a.setValues(p, q, r - p, t - q)

    };

    b._hasMouseEventListener = function() {

        for (var a = c._MOUSE_EVENTS, e = 0, b = a.length; b > e; e++)

            if (this.hasEventListener(a[e])) return !0;

        return !!this.cursor

    };

    createjs.DisplayObject = createjs.promote(c, "EventDispatcher")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this.DisplayObject_constructor();

        this.children = [];

        this.tickChildren = this.mouseChildren = !0

    }

    var b = createjs.extend(c, createjs.DisplayObject);

    b.getNumChildren = function() {

        return this.children.length

    };

    try {

        Object.defineProperties(b, {

            numChildren: {

                get: b.getNumChildren

            }

        })

    } catch (a) {}

    b.initialize = c;

    b.isVisible = function() {

        var a = this.cacheCanvas || this.children.length;

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY && a)

    };

    b.draw = function(a, d) {

        if (this.DisplayObject_draw(a,

            d)) return !0;

        for (var e = this.children.slice(), b = 0, c = e.length; c > b; b++) {

            var h = e[b];

            h.isVisible() && (a.save(), h.updateContext(a), h.draw(a), a.restore())

        }

        return !0

    };

    b.addChild = function(a) {

        if (null == a) return a;

        var d = arguments.length;

        if (1 < d) {

            for (var e = 0; d > e; e++) this.addChild(arguments[e]);

            return arguments[d - 1]

        }

        return a.parent && a.parent.removeChild(a), a.parent = this, this.children.push(a), a.dispatchEvent("added"), a

    };

    b.addChildAt = function(a, d) {

        var e = arguments.length,

            b = arguments[e - 1];

        if (0 > b || b > this.children.length) return arguments[e -

            2];

        if (2 < e) {

            for (var c = 0; e - 1 > c; c++) this.addChildAt(arguments[c], b + c);

            return arguments[e - 2]

        }

        return a.parent && a.parent.removeChild(a), a.parent = this, this.children.splice(d, 0, a), a.dispatchEvent("added"), a

    };

    b.removeChild = function(a) {

        var d = arguments.length;

        if (1 < d) {

            for (var e = !0, b = 0; d > b; b++) e = e && this.removeChild(arguments[b]);

            return e

        }

        return this.removeChildAt(createjs.indexOf(this.children, a))

    };

    b.removeChildAt = function(a) {

        var d = arguments.length;

        if (1 < d) {

            for (var e = [], b = 0; d > b; b++) e[b] = arguments[b];

            e.sort(function(a,

                d) {

                return d - a

            });

            for (var c = !0, b = 0; d > b; b++) c = c && this.removeChildAt(e[b]);

            return c

        }

        if (0 > a || a > this.children.length - 1) return !1;

        d = this.children[a];

        return d && (d.parent = null), this.children.splice(a, 1), d.dispatchEvent("removed"), !0

    };

    b.removeAllChildren = function() {

        for (var a = this.children; a.length;) this.removeChildAt(0)

    };

    b.getChildAt = function(a) {

        return this.children[a]

    };

    b.getChildByName = function(a) {

        for (var d = this.children, e = 0, b = d.length; b > e; e++)

            if (d[e].name == a) return d[e];

        return null

    };

    b.sortChildren = function(a) {

        this.children.sort(a)

    };

    b.getChildIndex = function(a) {

        return createjs.indexOf(this.children, a)

    };

    b.swapChildrenAt = function(a, d) {

        var e = this.children,

            b = e[a],

            c = e[d];

        b && c && (e[a] = c, e[d] = b)

    };

    b.swapChildren = function(a, d) {

        for (var e, b, c = this.children, h = 0, n = c.length; n > h && (c[h] == a && (e = h), c[h] == d && (b = h), null == e || null == b); h++);

        h != n && (c[e] = d, c[b] = a)

    };

    b.setChildIndex = function(a, d) {

        var e = this.children,

            b = e.length;

        if (!(a.parent != this || 0 > d || d >= b)) {

            for (var c = 0; b > c && e[c] != a; c++);

            c != b && c != d && (e.splice(c, 1), e.splice(d, 0, a))

        }

    };

    b.contains = function(a) {

        for (; a;) {

            if (a ==

                this) return !0;

            a = a.parent

        }

        return !1

    };

    b.hitTest = function(a, d) {

        return null != this.getObjectUnderPoint(a, d)

    };

    b.getObjectsUnderPoint = function(a, d, e) {

        var b = [];

        a = this.localToGlobal(a, d);

        return this._getObjectsUnderPoint(a.x, a.y, b, 0 < e, 1 == e), b

    };

    b.getObjectUnderPoint = function(a, d, e) {

        a = this.localToGlobal(a, d);

        return this._getObjectsUnderPoint(a.x, a.y, null, 0 < e, 1 == e)

    };

    b.getBounds = function() {

        return this._getBounds(null, !0)

    };

    b.getTransformedBounds = function() {

        return this._getBounds()

    };

    b.clone = function(a) {

        var d = this._cloneProps(new c);

        return a && this._cloneChildren(d), d

    };

    b.toString = function() {

        return "[Container (name=" + this.name + ")]"

    };

    b._tick = function(a) {

        if (this.tickChildren)

            for (var d = this.children.length - 1; 0 <= d; d--) {

                var e = this.children[d];

                e.tickEnabled && e._tick && e._tick(a)

            }

        this.DisplayObject__tick(a)

    };

    b._cloneChildren = function(a) {

        a.children.length && a.removeAllChildren();

        for (var d = a.children, e = 0, b = this.children.length; b > e; e++) {

            var c = this.children[e].clone(!0);

            c.parent = a;

            d.push(c)

        }

    };

    b._getObjectsUnderPoint = function(a, d, e, b, f, h) {

        if (h =

            h || 0, !h && !this._testMask(this, a, d)) return null;

        var g, m = createjs.DisplayObject._hitTestContext;

        f = f || b && this._hasMouseEventListener();

        for (var k = this.children, l = k.length - 1; 0 <= l; l--) {

            var p = k[l],

                r = p.hitArea;

            if (p.visible && (r || p.isVisible()) && (!b || p.mouseEnabled) && (r || this._testMask(p, a, d)))

                if (!r && p instanceof c) {

                    if (p = p._getObjectsUnderPoint(a, d, e, b, f, h + 1), !e && p) return b && !this.mouseChildren ? this : p

                } else if (!b || f || p._hasMouseEventListener()) {

                var q = p.getConcatenatedDisplayProps(p._props);

                if (g = q.matrix, r &&

                    (g.appendMatrix(r.getMatrix(r._props.matrix)), q.alpha = r.alpha), m.globalAlpha = q.alpha, m.setTransform(g.a, g.b, g.c, g.d, g.tx - a, g.ty - d), (r || p).draw(m), this._testHit(m)) {

                    if (m.setTransform(1, 0, 0, 1, 0, 0), m.clearRect(0, 0, 2, 2), !e) return b && !this.mouseChildren ? this : p;

                    e.push(p)

                }

            }

        }

        return null

    };

    b._testMask = function(a, d, e) {

        var b = a.mask;

        if (!b || !b.graphics || b.graphics.isEmpty()) return !0;

        var c = this._props.matrix,

            c = (a = a.parent) ? a.getConcatenatedMatrix(c) : c.identity(),

            c = b.getMatrix(b._props.matrix).prependMatrix(c);

        a =

            createjs.DisplayObject._hitTestContext;

        return a.setTransform(c.a, c.b, c.c, c.d, c.tx - d, c.ty - e), b.graphics.drawAsPath(a), a.fillStyle = "#000", a.fill(), this._testHit(a) ? (a.setTransform(1, 0, 0, 1, 0, 0), a.clearRect(0, 0, 2, 2), !0) : !1

    };

    b._getBounds = function(a, d) {

        var e = this.DisplayObject_getBounds();

        if (e) return this._transformBounds(e, a, d);

        var b = this._props.matrix,

            b = d ? b.identity() : this.getMatrix(b);

        a && b.prependMatrix(a);

        for (var c = this.children.length, h = null, n = 0; c > n; n++) {

            var m = this.children[n];

            m.visible && (e = m._getBounds(b)) &&

                (h ? h.extend(e.x, e.y, e.width, e.height) : h = e.clone())

        }

        return h

    };

    createjs.Container = createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.Container_constructor();

        this.autoClear = !0;

        this.canvas = "string" == typeof a ? document.getElementById(a) : a;

        this.mouseY = this.mouseX = 0;

        this.drawRect = null;

        this.mouseInBounds = this.snapToPixelEnabled = !1;

        this.tickOnUpdate = !0;

        this.mouseMoveOutside = !1;

        this.preventSelection = !0;

        this._pointerData = {};

        this._pointerCount = 0;

        this._prevStage = this._nextStage = this._mouseOverIntervalID = this._primaryPointerID = null;

        this.enableDOMEvents(!0)

    }

    var b = createjs.extend(c, createjs.Container);

    b._get_nextStage =

        function() {

            return this._nextStage

        };

    b._set_nextStage = function(a) {

        this._nextStage && (this._nextStage._prevStage = null);

        a && (a._prevStage = this);

        this._nextStage = a

    };

    try {

        Object.defineProperties(b, {

            nextStage: {

                get: b._get_nextStage,

                set: b._set_nextStage

            }

        })

    } catch (a) {}

    b.update = function(a) {

        if (this.canvas && (this.tickOnUpdate && this.tick(a), !1 !== this.dispatchEvent("drawstart", !1, !0))) {

            createjs.DisplayObject._snapToPixelEnabled = this.snapToPixelEnabled;

            a = this.drawRect;

            var d = this.canvas.getContext("2d");

            d.setTransform(1,

                0, 0, 1, 0, 0);

            this.autoClear && (a ? d.clearRect(a.x, a.y, a.width, a.height) : d.clearRect(0, 0, this.canvas.width + 1, this.canvas.height + 1));

            d.save();

            this.drawRect && (d.beginPath(), d.rect(a.x, a.y, a.width, a.height), d.clip());

            this.updateContext(d);

            this.draw(d, !1);

            d.restore();

            this.dispatchEvent("drawend")

        }

    };

    b.tick = function(a) {

        if (this.tickEnabled && !1 !== this.dispatchEvent("tickstart", !1, !0)) {

            var d = new createjs.Event("tick");

            if (a)

                for (var e in a) a.hasOwnProperty(e) && (d[e] = a[e]);

            this._tick(d);

            this.dispatchEvent("tickend")

        }

    };

    b.handleEvent = function(a) {

        "tick" == a.type && this.update(a)

    };

    b.clear = function() {

        if (this.canvas) {

            var a = this.canvas.getContext("2d");

            a.setTransform(1, 0, 0, 1, 0, 0);

            a.clearRect(0, 0, this.canvas.width + 1, this.canvas.height + 1)

        }

    };

    b.toDataURL = function(a, d) {

        var e, b = this.canvas.getContext("2d"),

            c = this.canvas.width,

            h = this.canvas.height;

        if (a) {

            e = b.getImageData(0, 0, c, h);

            var n = b.globalCompositeOperation;

            b.globalCompositeOperation = "destination-over";

            b.fillStyle = a;

            b.fillRect(0, 0, c, h)

        }

        c = this.canvas.toDataURL(d || "image/png");

        return a && (b.putImageData(e, 0, 0), b.globalCompositeOperation = n), c

    };

    b.enableMouseOver = function(a) {

        if (this._mouseOverIntervalID && (clearInterval(this._mouseOverIntervalID), this._mouseOverIntervalID = null, 0 == a && this._testMouseOver(!0)), null == a) a = 20;

        else if (0 >= a) return;

        var d = this;

        this._mouseOverIntervalID = setInterval(function() {

            d._testMouseOver()

        }, 1E3 / Math.min(50, a))

    };

    b.enableDOMEvents = function(a) {

        null == a && (a = !0);

        var d, e = this._eventListeners;

        if (!a && e) {

            for (d in e) a = e[d], a.t.removeEventListener(d, a.f, !1);

            this._eventListeners = null

        } else if (a && !e && this.canvas) {

            a = window.addEventListener ? window : document;

            var b = this,

                e = this._eventListeners = {};

            e.mouseup = {

                t: a,

                f: function(a) {

                    b._handleMouseUp(a)

                }

            };

            e.mousemove = {

                t: a,

                f: function(a) {

                    b._handleMouseMove(a)

                }

            };

            e.dblclick = {

                t: this.canvas,

                f: function(a) {

                    b._handleDoubleClick(a)

                }

            };

            e.mousedown = {

                t: this.canvas,

                f: function(a) {

                    b._handleMouseDown(a)

                }

            };

            for (d in e) a = e[d], a.t.addEventListener(d, a.f, !1)

        }

    };

    b.clone = function() {

        throw "Stage cannot be cloned.";

    };

    b.toString = function() {

        return "[Stage (name=" +

            this.name + ")]"

    };

    b._getElementRect = function(a) {

        var d;

        try {

            d = a.getBoundingClientRect()

        } catch (m) {

            d = {

                top: a.offsetTop,

                left: a.offsetLeft,

                width: a.offsetWidth,

                height: a.offsetHeight

            }

        }

        var e = (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || document.body.clientLeft || 0),

            b = (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || document.body.clientTop || 0),

            c = window.getComputedStyle ? getComputedStyle(a, null) : a.currentStyle;

        a = parseInt(c.paddingLeft) + parseInt(c.borderLeftWidth);

        var h = parseInt(c.paddingTop) +

            parseInt(c.borderTopWidth),

            n = parseInt(c.paddingRight) + parseInt(c.borderRightWidth),

            c = parseInt(c.paddingBottom) + parseInt(c.borderBottomWidth);

        return {

            left: d.left + e + a,

            right: d.right + e - n,

            top: d.top + b + h,

            bottom: d.bottom + b - c

        }

    };

    b._getPointerData = function(a) {

        var d = this._pointerData[a];

        return d || (d = this._pointerData[a] = {

            x: 0,

            y: 0

        }), d

    };

    b._handleMouseMove = function(a) {

        a || (a = window.event);

        this._handlePointerMove(-1, a, a.pageX, a.pageY)

    };

    b._handlePointerMove = function(a, d, e, b, c) {

        if ((!this._prevStage || void 0 !== c) && this.canvas) {

            c =

                this._nextStage;

            var f = this._getPointerData(a),

                g = f.inBounds;

            this._updatePointerPosition(a, d, e, b);

            (g || f.inBounds || this.mouseMoveOutside) && (-1 === a && f.inBounds == !g && this._dispatchMouseEvent(this, g ? "mouseleave" : "mouseenter", !1, a, f, d), this._dispatchMouseEvent(this, "stagemousemove", !1, a, f, d), this._dispatchMouseEvent(f.target, "pressmove", !0, a, f, d));

            c && c._handlePointerMove(a, d, e, b, null)

        }

    };

    b._updatePointerPosition = function(a, d, e, b) {

        var c = this._getElementRect(this.canvas);

        e -= c.left;

        b -= c.top;

        var g = this.canvas.width,

            n = this.canvas.height;

        e /= (c.right - c.left) / g;

        b /= (c.bottom - c.top) / n;

        c = this._getPointerData(a);

        (c.inBounds = 0 <= e && 0 <= b && g - 1 >= e && n - 1 >= b) ? (c.x = e, c.y = b) : this.mouseMoveOutside && (c.x = 0 > e ? 0 : e > g - 1 ? g - 1 : e, c.y = 0 > b ? 0 : b > n - 1 ? n - 1 : b);

        c.posEvtObj = d;

        c.rawX = e;

        c.rawY = b;

        (a === this._primaryPointerID || -1 === a) && (this.mouseX = c.x, this.mouseY = c.y, this.mouseInBounds = c.inBounds)

    };

    b._handleMouseUp = function(a) {

        this._handlePointerUp(-1, a, !1)

    };

    b._handlePointerUp = function(a, d, b, c) {

        var e = this._nextStage,

            g = this._getPointerData(a);

        if (!this._prevStage ||

            void 0 !== c) {

            var n = null,

                m = g.target;

            c || !m && !e || (n = this._getObjectsUnderPoint(g.x, g.y, null, !0));

            g.down && (this._dispatchMouseEvent(this, "stagemouseup", !1, a, g, d, n), g.down = !1);

            n == m && this._dispatchMouseEvent(m, "click", !0, a, g, d);

            this._dispatchMouseEvent(m, "pressup", !0, a, g, d);

            b ? (a == this._primaryPointerID && (this._primaryPointerID = null), delete this._pointerData[a]) : g.target = null;

            e && e._handlePointerUp(a, d, b, c || n && this)

        }

    };

    b._handleMouseDown = function(a) {

        this._handlePointerDown(-1, a, a.pageX, a.pageY)

    };

    b._handlePointerDown =

        function(a, d, b, c, f) {

            this.preventSelection && d.preventDefault();

            null != this._primaryPointerID && -1 !== a || (this._primaryPointerID = a);

            null != c && this._updatePointerPosition(a, d, b, c);

            var e = null,

                g = this._nextStage,

                m = this._getPointerData(a);

            f || (e = m.target = this._getObjectsUnderPoint(m.x, m.y, null, !0));

            m.inBounds && (this._dispatchMouseEvent(this, "stagemousedown", !1, a, m, d, e), m.down = !0);

            this._dispatchMouseEvent(e, "mousedown", !0, a, m, d);

            g && g._handlePointerDown(a, d, b, c, f || e && this)

        };

    b._testMouseOver = function(a, d, b) {

        if (!this._prevStage ||

            void 0 !== d) {

            var e = this._nextStage;

            if (!this._mouseOverIntervalID) return void(e && e._testMouseOver(a, d, b));

            var c = this._getPointerData(-1);

            if (c && (a || this.mouseX != this._mouseOverX || this.mouseY != this._mouseOverY || !this.mouseInBounds)) {

                var h, n, m = c.posEvtObj,

                    k = b || m && m.target == this.canvas,

                    l = null,

                    p = -1;

                n = "";

                !d && (a || this.mouseInBounds && k) && (l = this._getObjectsUnderPoint(this.mouseX, this.mouseY, null, !0), this._mouseOverX = this.mouseX, this._mouseOverY = this.mouseY);

                var r = this._mouseOverTarget || [],

                    q = r[r.length - 1],

                    t =

                    this._mouseOverTarget = [];

                for (h = l; h;) t.unshift(h), n || (n = h.cursor), h = h.parent;

                this.canvas.style.cursor = n;

                !d && b && (b.canvas.style.cursor = n);

                h = 0;

                for (n = t.length; n > h && t[h] == r[h]; h++) p = h;

                q != l && this._dispatchMouseEvent(q, "mouseout", !0, -1, c, m, l);

                for (h = r.length - 1; h > p; h--) this._dispatchMouseEvent(r[h], "rollout", !1, -1, c, m, l);

                for (h = t.length - 1; h > p; h--) this._dispatchMouseEvent(t[h], "rollover", !1, -1, c, m, q);

                q != l && this._dispatchMouseEvent(l, "mouseover", !0, -1, c, m, q);

                e && e._testMouseOver(a, d || l && this, b || k && this)

            }

        }

    };

    b._handleDoubleClick =

        function(a, d) {

            var b = null,

                c = this._nextStage,

                f = this._getPointerData(-1);

            d || (b = this._getObjectsUnderPoint(f.x, f.y, null, !0), this._dispatchMouseEvent(b, "dblclick", !0, -1, f, a));

            c && c._handleDoubleClick(a, d || b && this)

        };

    b._dispatchMouseEvent = function(a, d, b, c, f, h, n) {

        a && (b || a.hasEventListener(d)) && (d = new createjs.MouseEvent(d, b, !1, f.x, f.y, h, c, c === this._primaryPointerID || -1 === c, f.rawX, f.rawY, n), a.dispatchEvent(d))

    };

    createjs.Stage = createjs.promote(c, "Container")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.DisplayObject_constructor();

        "string" == typeof a ? (this.image = document.createElement("img"), this.image.src = a) : this.image = a;

        this.sourceRect = null

    }

    var b = createjs.extend(c, createjs.DisplayObject);

    b.initialize = c;

    b.isVisible = function() {

        var a = this.image,

            a = this.cacheCanvas || a && (a.naturalWidth || a.getContext || 2 <= a.readyState);

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY && a)

    };

    b.draw = function(a, d) {

        if (this.DisplayObject_draw(a, d) || !this.image) return !0;

        var b = this.image,

            c = this.sourceRect;

        if (c) {

            var f = c.x,

                h = c.y,

                n = f + c.width,

                c = h + c.height,

                m = 0,

                k = 0,

                l = b.width,

                p = b.height;

            0 > f && (m -= f, f = 0);

            n > l && (n = l);

            0 > h && (k -= h, h = 0);

            c > p && (c = p);

            a.drawImage(b, f, h, n - f, c - h, m, k, n - f, c - h)

        } else a.drawImage(b, 0, 0);

        return !0

    };

    b.getBounds = function() {

        var a = this.DisplayObject_getBounds();

        if (a) return a;

        var a = this.image,

            d = this.sourceRect || a;

        return a && (a.naturalWidth || a.getContext || 2 <= a.readyState) ? this._rectangle.setValues(0, 0, d.width, d.height) : null

    };

    b.clone = function() {

        var a = new c(this.image);

        return this.sourceRect &&

            (a.sourceRect = this.sourceRect.clone()), this._cloneProps(a), a

    };

    b.toString = function() {

        return "[Bitmap (name=" + this.name + ")]"

    };

    createjs.Bitmap = createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d) {

        this.DisplayObject_constructor();

        this.currentFrame = 0;

        this.currentAnimation = null;

        this.paused = !0;

        this.spriteSheet = a;

        this.framerate = this.currentAnimationFrame = 0;

        this._currentFrame = this._animation = null;

        this._skipAdvance = !1;

        null != d && this.gotoAndPlay(d)

    }

    var b = createjs.extend(c, createjs.DisplayObject);

    b.initialize = c;

    b.isVisible = function() {

        var a = this.cacheCanvas || this.spriteSheet.complete;

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY && a)

    };

    b.draw = function(a,

        d) {

        if (this.DisplayObject_draw(a, d)) return !0;

        this._normalizeFrame();

        var b = this.spriteSheet.getFrame(0 | this._currentFrame);

        if (!b) return !1;

        var c = b.rect;

        return c.width && c.height && a.drawImage(b.image, c.x, c.y, c.width, c.height, -b.regX, -b.regY, c.width, c.height), !0

    };

    b.play = function() {

        this.paused = !1

    };

    b.stop = function() {

        this.paused = !0

    };

    b.gotoAndPlay = function(a) {

        this.paused = !1;

        this._skipAdvance = !0;

        this._goto(a)

    };

    b.gotoAndStop = function(a) {

        this.paused = !0;

        this._goto(a)

    };

    b.advance = function(a) {

        var d = this.framerate ||

            this.spriteSheet.framerate;

        this._normalizeFrame(d && null != a ? a / (1E3 / d) : 1)

    };

    b.getBounds = function() {

        return this.DisplayObject_getBounds() || this.spriteSheet.getFrameBounds(this.currentFrame, this._rectangle)

    };

    b.clone = function() {

        return this._cloneProps(new c(this.spriteSheet))

    };

    b.toString = function() {

        return "[Sprite (name=" + this.name + ")]"

    };

    b._cloneProps = function(a) {

        return this.DisplayObject__cloneProps(a), a.currentFrame = this.currentFrame, a.currentAnimation = this.currentAnimation, a.paused = this.paused, a.currentAnimationFrame =

            this.currentAnimationFrame, a.framerate = this.framerate, a._animation = this._animation, a._currentFrame = this._currentFrame, a._skipAdvance = this._skipAdvance, a

    };

    b._tick = function(a) {

        this.paused || (this._skipAdvance || this.advance(a && a.delta), this._skipAdvance = !1);

        this.DisplayObject__tick(a)

    };

    b._normalizeFrame = function(a) {

        a = a || 0;

        var d, b = this._animation,

            c = this.paused,

            f = this._currentFrame;

        if (b) {

            var h = b.speed || 1,

                n = this.currentAnimationFrame;

            if (d = b.frames.length, n + a * h >= d) {

                var m = b.next;

                if (this._dispatchAnimationEnd(b,

                    f, c, m, d - 1)) return;

                if (m) return this._goto(m, a - (d - n) / h);

                this.paused = !0;

                n = b.frames.length - 1

            } else n += a * h;

            this.currentAnimationFrame = n;

            this._currentFrame = b.frames[0 | n]

        } else if (f = this._currentFrame += a, d = this.spriteSheet.getNumFrames(), f >= d && 0 < d && !this._dispatchAnimationEnd(b, f, c, d - 1) && (this._currentFrame -= d) >= d) return this._normalizeFrame();

        f = 0 | this._currentFrame;

        this.currentFrame != f && (this.currentFrame = f, this.dispatchEvent("change"))

    };

    b._dispatchAnimationEnd = function(a, d, b, c, f) {

        var e = a ? a.name : null;

        if (this.hasEventListener("animationend")) {

            var g =

                new createjs.Event("animationend");

            g.name = e;

            g.next = c;

            this.dispatchEvent(g)

        }

        a = this._animation != a || this._currentFrame != d;

        return a || b || !this.paused || (this.currentAnimationFrame = f, a = !0), a

    };

    b._goto = function(a, d) {

        if (this.currentAnimationFrame = 0, isNaN(a)) {

            var b = this.spriteSheet.getAnimation(a);

            b && (this._animation = b, this.currentAnimation = a, this._normalizeFrame(d))

        } else this.currentAnimation = this._animation = null, this._currentFrame = a, this._normalizeFrame()

    };

    createjs.Sprite = createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.DisplayObject_constructor();

        this.graphics = a ? a : new createjs.Graphics

    }

    var b = createjs.extend(c, createjs.DisplayObject);

    b.isVisible = function() {

        var a = this.cacheCanvas || this.graphics && !this.graphics.isEmpty();

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY && a)

    };

    b.draw = function(a, d) {

        return this.DisplayObject_draw(a, d) ? !0 : (this.graphics.draw(a, this), !0)

    };

    b.clone = function(a) {

        a = a && this.graphics ? this.graphics.clone() : this.graphics;

        return this._cloneProps(new c(a))

    };

    b.toString = function() {

        return "[Shape (name=" + this.name + ")]"

    };

    createjs.Shape = createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.DisplayObject_constructor();

        this.text = a;

        this.font = b;

        this.color = c;

        this.textAlign = "left";

        this.textBaseline = "top";

        this.maxWidth = null;

        this.lineHeight = this.outline = 0;

        this.lineWidth = null

    }

    var b = createjs.extend(c, createjs.DisplayObject),

        a = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas");

    a.getContext && (c._workingContext = a.getContext("2d"), a.width = a.height = 1);

    c.H_OFFSETS = {

        start: 0,

        left: 0,

        center: -.5,

        end: -1,

        right: -1

    };

    c.V_OFFSETS = {

        top: 0,

        hanging: -.01,

        middle: -.4,

        alphabetic: -.8,

        ideographic: -.85,

        bottom: -1

    };

    b.isVisible = function() {

        var a = this.cacheCanvas || null != this.text && "" !== this.text;

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY && a)

    };

    b.draw = function(a, b) {

        if (this.DisplayObject_draw(a, b)) return !0;

        var d = this.color || "#000";

        return this.outline ? (a.strokeStyle = d, a.lineWidth = 1 * this.outline) : a.fillStyle = d, this._drawText(this._prepContext(a)), !0

    };

    b.getMeasuredWidth = function() {

        return this._getMeasuredWidth(this.text)

    };

    b.getMeasuredLineHeight =

        function() {

            return 1.2 * this._getMeasuredWidth("M")

        };

    b.getMeasuredHeight = function() {

        return this._drawText(null, {}).height

    };

    b.getBounds = function() {

        var a = this.DisplayObject_getBounds();

        if (a) return a;

        if (null == this.text || "" === this.text) return null;

        var a = this._drawText(null, {}),

            b = this.maxWidth && this.maxWidth < a.width ? this.maxWidth : a.width,

            g = b * c.H_OFFSETS[this.textAlign || "left"],

            f = (this.lineHeight || this.getMeasuredLineHeight()) * c.V_OFFSETS[this.textBaseline || "top"];

        return this._rectangle.setValues(g, f, b, a.height)

    };

    b.getMetrics = function() {

        var a = {

            lines: []

        };

        return a.lineHeight = this.lineHeight || this.getMeasuredLineHeight(), a.vOffset = a.lineHeight * c.V_OFFSETS[this.textBaseline || "top"], this._drawText(null, a, a.lines)

    };

    b.clone = function() {

        return this._cloneProps(new c(this.text, this.font, this.color))

    };

    b.toString = function() {

        return "[Text (text=" + (20 < this.text.length ? this.text.substr(0, 17) + "..." : this.text) + ")]"

    };

    b._cloneProps = function(a) {

        return this.DisplayObject__cloneProps(a), a.textAlign = this.textAlign, a.textBaseline =

            this.textBaseline, a.maxWidth = this.maxWidth, a.outline = this.outline, a.lineHeight = this.lineHeight, a.lineWidth = this.lineWidth, a

    };

    b._prepContext = function(a) {

        return a.font = this.font || "10px sans-serif", a.textAlign = this.textAlign || "left", a.textBaseline = this.textBaseline || "top", a

    };

    b._drawText = function(a, b, g) {

        var d = !!a;

        d || (a = c._workingContext, a.save(), this._prepContext(a));

        for (var e = this.lineHeight || this.getMeasuredLineHeight(), n = 0, m = 0, k = String(this.text).split(/(?:\r\n|\r|\n)/), l = 0, p = k.length; p > l; l++) {

            var r =

                k[l],

                q = null;

            if (null != this.lineWidth && (q = a.measureText(r).width) > this.lineWidth)

                for (var t = r.split(/(\s)/), r = t[0], q = a.measureText(r).width, u = 1, v = t.length; v > u; u += 2) {

                    var B = a.measureText(t[u] + t[u + 1]).width;

                    q + B > this.lineWidth ? (d && this._drawTextLine(a, r, m * e), g && g.push(r), q > n && (n = q), r = t[u + 1], q = a.measureText(r).width, m++) : (r += t[u] + t[u + 1], q += B)

                }

            d && this._drawTextLine(a, r, m * e);

            g && g.push(r);

            b && null == q && (q = a.measureText(r).width);

            q > n && (n = q);

            m++

        }

        return b && (b.width = n, b.height = m * e), d || a.restore(), b

    };

    b._drawTextLine =

        function(a, b, c) {

            this.outline ? a.strokeText(b, 0, c, this.maxWidth || 65535) : a.fillText(b, 0, c, this.maxWidth || 65535)

        };

    b._getMeasuredWidth = function(a) {

        var d = c._workingContext;

        d.save();

        a = this._prepContext(d).measureText(a).width;

        return d.restore(), a

    };

    createjs.Text = createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, d) {

        this.Container_constructor();

        this.text = a || "";

        this.spriteSheet = d;

        this.spaceWidth = this.letterSpacing = this.lineHeight = 0;

        this._oldProps = {

            text: 0,

            spriteSheet: 0,

            lineHeight: 0,

            letterSpacing: 0,

            spaceWidth: 0

        }

    }

    var b = createjs.extend(c, createjs.Container);

    c.maxPoolSize = 100;

    c._spritePool = [];

    b.draw = function(a, d) {

        this.DisplayObject_draw(a, d) || (this._updateText(), this.Container_draw(a, d))

    };

    b.getBounds = function() {

        return this._updateText(), this.Container_getBounds()

    };

    b.isVisible = function() {

        var a =

            this.cacheCanvas || this.spriteSheet && this.spriteSheet.complete && this.text;

        return !!(this.visible && 0 < this.alpha && 0 !== this.scaleX && 0 !== this.scaleY && a)

    };

    b.clone = function() {

        return this._cloneProps(new c(this.text, this.spriteSheet))

    };

    b.addChild = b.addChildAt = b.removeChild = b.removeChildAt = b.removeAllChildren = function() {};

    b._cloneProps = function(a) {

        return this.Container__cloneProps(a), a.lineHeight = this.lineHeight, a.letterSpacing = this.letterSpacing, a.spaceWidth = this.spaceWidth, a

    };

    b._getFrameIndex = function(a,

        d) {

        var b, c = d.getAnimation(a);

        return c || (a != (b = a.toUpperCase()) || a != (b = a.toLowerCase()) || (b = null), b && (c = d.getAnimation(b))), c && c.frames[0]

    };

    b._getFrame = function(a, d) {

        var b = this._getFrameIndex(a, d);

        return null == b ? b : d.getFrame(b)

    };

    b._getLineHeight = function(a) {

        return (a = this._getFrame("1", a) || this._getFrame("T", a) || this._getFrame("L", a) || a.getFrame(0)) ? a.rect.height : 1

    };

    b._getSpaceWidth = function(a) {

        return (a = this._getFrame("1", a) || this._getFrame("l", a) || this._getFrame("e", a) || this._getFrame("a", a) || a.getFrame(0)) ?

            a.rect.width : 1

    };

    b._updateText = function() {

        var a, d = 0,

            b = 0,

            g = this._oldProps,

            f = !1,

            h = this.spaceWidth,

            n = this.lineHeight,

            m = this.spriteSheet,

            k = c._spritePool,

            l = this.children,

            p = 0,

            r = l.length,

            q;

        for (q in g) g[q] != this[q] && (g[q] = this[q], f = !0);

        if (f) {

            (g = !!this._getFrame(" ", m)) || h || (h = this._getSpaceWidth(m));

            n || (n = this._getLineHeight(m));

            f = 0;

            for (q = this.text.length; q > f; f++) {

                var t = this.text.charAt(f);

                " " != t || g ? "\n" != t && "\r" != t ? (t = this._getFrameIndex(t, m), null != t && (r > p ? a = l[p] : (l.push(a = k.length ? k.pop() : new createjs.Sprite),

                    a.parent = this, r++), a.spriteSheet = m, a.gotoAndStop(t), a.x = d, a.y = b, p++, d += a.getBounds().width + this.letterSpacing)) : ("\r" == t && "\n" == this.text.charAt(f + 1) && f++, d = 0, b += n) : d += h

            }

            for (; r > p;) k.push(a = l.pop()), a.parent = null, r--;

            k.length > c.maxPoolSize && (k.length = c.maxPoolSize)

        }

    };

    createjs.BitmapText = createjs.promote(c, "Container")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, g, f) {

        this.Container_constructor();

        !c.inited && c.init();

        this.mode = a || c.INDEPENDENT;

        this.startPosition = b || 0;

        this.loop = g;

        this.currentFrame = 0;

        this.timeline = new createjs.Timeline(null, f, {

            paused: !0,

            position: b,

            useTicks: !0

        });

        this.paused = !1;

        this.autoReset = this.actionsEnabled = !0;

        this.frameBounds = this.frameBounds || null;

        this.framerate = null;

        this._synchOffset = 0;

        this._prevPos = -1;

        this._t = this._prevPosition = 0;

        this._managed = {}

    }



    function b() {

        throw "MovieClipPlugin cannot be instantiated.";

    }

    var a =

        createjs.extend(c, createjs.Container);

    c.INDEPENDENT = "independent";

    c.SINGLE_FRAME = "single";

    c.SYNCHED = "synched";

    c.inited = !1;

    c.init = function() {

        c.inited || (b.install(), c.inited = !0)

    };

    a.getLabels = function() {

        return this.timeline.getLabels()

    };

    a.getCurrentLabel = function() {

        return this._updateTimeline(), this.timeline.getCurrentLabel()

    };

    a.getDuration = function() {

        return this.timeline.duration

    };

    try {

        Object.defineProperties(a, {

            labels: {

                get: a.getLabels

            },

            currentLabel: {

                get: a.getCurrentLabel

            },

            totalFrames: {

                get: a.getDuration

            },

            duration: {

                get: a.getDuration

            }

        })

    } catch (d) {}

    a.initialize = c;

    a.isVisible = function() {

        return !!(this.visible && 0 < this.alpha && 0 != this.scaleX && 0 != this.scaleY)

    };

    a.draw = function(a, b) {

        return this.DisplayObject_draw(a, b) ? !0 : (this._updateTimeline(), this.Container_draw(a, b), !0)

    };

    a.play = function() {

        this.paused = !1

    };

    a.stop = function() {

        this.paused = !0

    };

    a.gotoAndPlay = function(a) {

        this.paused = !1;

        this._goto(a)

    };

    a.gotoAndStop = function(a) {

        this.paused = !0;

        this._goto(a)

    };

    a.advance = function(a) {

        var d = c.INDEPENDENT;

        if (this.mode == d) {

            for (var b =

                    this, f = b.framerate;

                (b = b.parent) && null == f;) b.mode == d && (f = b._framerate);

            this._framerate = f;

            a = null != f && -1 != f && null != a ? a / (1E3 / f) + this._t : 1;

            d = 0 | a;

            for (this._t = a - d; !this.paused && d--;) this._prevPosition = 0 > this._prevPos ? 0 : this._prevPosition + 1, this._updateTimeline()

        }

    };

    a.clone = function() {

        throw "MovieClip cannot be cloned.";

    };

    a.toString = function() {

        return "[MovieClip (name=" + this.name + ")]"

    };

    a._tick = function(a) {

        this.advance(a && a.delta);

        this.Container__tick(a)

    };

    a._goto = function(a) {

        a = this.timeline.resolve(a);

        null !=

            a && (-1 == this._prevPos && (this._prevPos = 0 / 0), this._prevPosition = a, this._t = 0, this._updateTimeline())

    };

    a._reset = function() {

        this._prevPos = -1;

        this._t = this.currentFrame = 0;

        this.paused = !1

    };

    a._updateTimeline = function() {

        var a = this.timeline,

            b = this.mode != c.INDEPENDENT;

        a.loop = null == this.loop ? !0 : this.loop;

        var g = b ? this.startPosition + (this.mode == c.SINGLE_FRAME ? 0 : this._synchOffset) : 0 > this._prevPos ? 0 : this._prevPosition,

            b = b || !this.actionsEnabled ? createjs.Tween.NONE : null;

        if (this.currentFrame = a._calcPosition(g), a.setPosition(g,

            b), this._prevPosition = a._prevPosition, this._prevPos != a._prevPos) {

            this.currentFrame = this._prevPos = a._prevPos;

            for (var f in this._managed) this._managed[f] = 1;

            g = a._tweens;

            a = 0;

            for (f = g.length; f > a; a++) {

                var h = g[a],

                    b = h._target;

                b == this || h.passive || (h = h._stepPosition, b instanceof createjs.DisplayObject ? this._addManagedChild(b, h) : this._setState(b.state, h))

            }

            g = this.children;

            for (a = g.length - 1; 0 <= a; a--) f = g[a].id, 1 == this._managed[f] && (this.removeChildAt(a), delete this._managed[f])

        }

    };

    a._setState = function(a, b) {

        if (a)

            for (var d =

                a.length - 1; 0 <= d; d--) {

                var e = a[d],

                    c = e.t,

                    e = e.p,

                    n;

                for (n in e) c[n] = e[n];

                this._addManagedChild(c, b)

            }

    };

    a._addManagedChild = function(a, b) {

        a._off || (this.addChildAt(a, 0), a instanceof c && (a._synchOffset = b, a.mode == c.INDEPENDENT && a.autoReset && !this._managed[a.id] && a._reset()), this._managed[a.id] = 2)

    };

    a._getBounds = function(a, b) {

        var d = this.DisplayObject_getBounds();

        return d || (this._updateTimeline(), this.frameBounds && (d = this._rectangle.copy(this.frameBounds[this.currentFrame]))), d ? this._transformBounds(d, a, b) : this.Container__getBounds(a,

            b)

    };

    createjs.MovieClip = createjs.promote(c, "Container");

    b.priority = 100;

    b.install = function() {

        createjs.Tween.installPlugin(b, ["startPosition"])

    };

    b.init = function(a, b, c) {

        return c

    };

    b.step = function() {};

    b.tween = function(a, b, g, f, h, n) {

        return a.target instanceof c ? 1 == n ? h[b] : f[b] : g

    }

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "SpriteSheetUtils cannot be instantiated";

    }

    var b = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas");

    b.getContext && (c._workingCanvas = b, c._workingContext = b.getContext("2d"), b.width = b.height = 1);

    c.addFlippedFrames = function(a, b, e, g) {

        if (b || e || g) {

            var d = 0;

            b && c._flip(a, ++d, !0, !1);

            e && c._flip(a, ++d, !1, !0);

            g && c._flip(a, ++d, !0, !0)

        }

    };

    c.extractFrame = function(a, b) {

        isNaN(b) && (b = a.getAnimation(b).frames[0]);

        var d = a.getFrame(b);

        if (!d) return null;

        var g = d.rect,

            f = c._workingCanvas;

        f.width = g.width;

        f.height = g.height;

        c._workingContext.drawImage(d.image, g.x, g.y, g.width, g.height, 0, 0, g.width, g.height);

        d = document.createElement("img");

        return d.src = f.toDataURL("image/png"), d

    };

    c.mergeAlpha = function(a, b, e) {

        e || (e = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas"));

        e.width = Math.max(b.width, a.width);

        e.height = Math.max(b.height, a.height);

        var d = e.getContext("2d");

        return d.save(), d.drawImage(a, 0, 0), d.globalCompositeOperation = "destination-in", d.drawImage(b,

            0, 0), d.restore(), e

    };

    c._flip = function(a, b, e, g) {

        for (var d = a._images, h = c._workingCanvas, n = c._workingContext, m = d.length / b, k = 0; m > k; k++) {

            var l = d[k];

            l.__tmp = k;

            n.setTransform(1, 0, 0, 1, 0, 0);

            n.clearRect(0, 0, h.width + 1, h.height + 1);

            h.width = l.width;

            h.height = l.height;

            n.setTransform(e ? -1 : 1, 0, 0, g ? -1 : 1, e ? l.width : 0, g ? l.height : 0);

            n.drawImage(l, 0, 0);

            var p = document.createElement("img");

            p.src = h.toDataURL("image/png");

            p.width = l.width;

            p.height = l.height;

            d.push(p)

        }

        n = a._frames;

        h = n.length / b;

        for (k = 0; h > k; k++) {

            var l = n[k],

                r = l.rect.clone(),

                p = d[l.image.__tmp + m * b],

                q = {

                    image: p,

                    rect: r,

                    regX: l.regX,

                    regY: l.regY

                };

            e && (r.x = p.width - r.x - r.width, q.regX = r.width - l.regX);

            g && (r.y = p.height - r.y - r.height, q.regY = r.height - l.regY);

            n.push(q)

        }

        e = "_" + (e ? "h" : "") + (g ? "v" : "");

        g = a._animations;

        a = a._data;

        d = g.length / b;

        for (k = 0; d > k; k++) {

            n = g[k];

            l = a[n];

            m = {

                name: n + e,

                speed: l.speed,

                next: l.next,

                frames: []

            };

            l.next && (m.next += e);

            n = l.frames;

            l = 0;

            for (p = n.length; p > l; l++) m.frames.push(n[l] + h * b);

            a[m.name] = m;

            g.push(m.name)

        }

    };

    createjs.SpriteSheetUtils = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.EventDispatcher_constructor();

        this.maxHeight = this.maxWidth = 2048;

        this.spriteSheet = null;

        this.padding = this.scale = 1;

        this.timeSlice = .3;

        this.progress = -1;

        this.framerate = a || 0;

        this._frames = [];

        this._animations = {};

        this._data = null;

        this._index = this._nextFrameIndex = 0;

        this._timerID = null;

        this._scale = 1

    }

    var b = createjs.extend(c, createjs.EventDispatcher);

    c.ERR_DIMENSIONS = "frame dimensions exceed max spritesheet dimensions";

    c.ERR_RUNNING = "a build is already running";

    b.addFrame = function(a,

        b, e, g, f) {

        if (this._data) throw c.ERR_RUNNING;

        b = b || a.bounds || a.nominalBounds;

        return !b && a.getBounds && (b = a.getBounds()), b ? (e = e || 1, this._frames.push({

            source: a,

            sourceRect: b,

            scale: e,

            funct: g,

            data: f,

            index: this._frames.length,

            height: b.height * e

        }) - 1) : null

    };

    b.addAnimation = function(a, b, e, g) {

        if (this._data) throw c.ERR_RUNNING;

        this._animations[a] = {

            frames: b,

            next: e,

            speed: g

        }

    };

    b.addMovieClip = function(a, b, e, g, f, h) {

        if (this._data) throw c.ERR_RUNNING;

        var d = a.frameBounds,

            m = b || a.bounds || a.nominalBounds;

        if (!m && a.getBounds && (m =

            a.getBounds()), m || d) {

            var k, l;

            b = this._frames.length;

            var p = a.timeline.duration;

            for (k = 0; p > k; k++) this.addFrame(a, d && d[k] ? d[k] : m, e, this._setupMovieClipFrame, {

                i: k,

                f: g,

                d: f

            });

            k = a.timeline._labels;

            e = [];

            for (l in k) e.push({

                index: k[l],

                label: l

            });

            if (e.length)

                for (e.sort(function(a, b) {

                    return a.index - b.index

                }), k = 0, l = e.length; l > k; k++) {

                    g = e[k].label;

                    f = b + e[k].index;

                    for (var d = b + (k == l - 1 ? p : e[k + 1].index), m = [], r = f; d > r; r++) m.push(r);

                    h && !(g = h(g, a, f, d)) || this.addAnimation(g, m, !0)

                }

        }

    };

    b.build = function() {

        if (this._data) throw c.ERR_RUNNING;

        for (this._startBuild(); this._drawNext(););

        return this._endBuild(), this.spriteSheet

    };

    b.buildAsync = function(a) {

        if (this._data) throw c.ERR_RUNNING;

        this.timeSlice = a;

        this._startBuild();

        var b = this;

        this._timerID = setTimeout(function() {

            b._run()

        }, 50 - 50 * Math.max(.01, Math.min(.99, this.timeSlice || .3)))

    };

    b.stopAsync = function() {

        clearTimeout(this._timerID);

        this._data = null

    };

    b.clone = function() {

        throw "SpriteSheetBuilder cannot be cloned.";

    };

    b.toString = function() {

        return "[SpriteSheetBuilder]"

    };

    b._startBuild = function() {

        var a =

            this.padding || 0;

        this.progress = 0;

        this.spriteSheet = null;

        this._index = 0;

        this._scale = this.scale;

        var b = [];

        this._data = {

            images: [],

            frames: b,

            framerate: this.framerate,

            animations: this._animations

        };

        var e = this._frames.slice();

        if (e.sort(function(a, b) {

            return a.height <= b.height ? -1 : 1

        }), e[e.length - 1].height + 2 * a > this.maxHeight) throw c.ERR_DIMENSIONS;

        for (var g = 0, f = 0, h = 0; e.length;) {

            var n = this._fillRow(e, g, h, b, a);

            if (n.w > f && (f = n.w), g += n.h, !n.h || !e.length) {

                var m = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas");

                m.width = this._getSize(f, this.maxWidth);

                m.height = this._getSize(g, this.maxHeight);

                this._data.images[h] = m;

                n.h || (f = g = 0, h++)

            }

        }

    };

    b._setupMovieClipFrame = function(a, b) {

        var d = a.actionsEnabled;

        a.actionsEnabled = !1;

        a.gotoAndStop(b.i);

        a.actionsEnabled = d;

        b.f && b.f(a, b.d, b.i)

    };

    b._getSize = function(a, b) {

        for (var d = 4; Math.pow(2, ++d) < a;);

        return Math.min(b, Math.pow(2, d))

    };

    b._fillRow = function(a, b, e, g, f) {

        var d = this.maxWidth,

            n = this.maxHeight;

        b += f;

        for (var n = n - b, m = f, k = 0, l = a.length - 1; 0 <= l; l--) {

            var p = a[l],

                r = this._scale * p.scale,

                q = p.sourceRect,

                t = p.source,

                u = Math.floor(r * q.x - f),

                v = Math.floor(r * q.y - f),

                B = Math.ceil(r * q.height + 2 * f),

                q = Math.ceil(r * q.width + 2 * f);

            if (q > d) throw c.ERR_DIMENSIONS;

            B > n || m + q > d || (p.img = e, p.rect = new createjs.Rectangle(m, b, q, B), k = k || B, a.splice(l, 1), g[p.index] = [m, b, q, B, e, Math.round(-u + r * t.regX - f), Math.round(-v + r * t.regY - f)], m += q)

        }

        return {

            w: m,

            h: k

        }

    };

    b._endBuild = function() {

        this.spriteSheet = new createjs.SpriteSheet(this._data);

        this._data = null;

        this.progress = 1;

        this.dispatchEvent("complete")

    };

    b._run = function() {

        for (var a =

            50 * Math.max(.01, Math.min(.99, this.timeSlice || .3)), b = (new Date).getTime() + a, e = !1; b > (new Date).getTime();)

            if (!this._drawNext()) {

                e = !0;

                break

            }

        if (e) this._endBuild();

        else {

            var c = this;

            this._timerID = setTimeout(function() {

                c._run()

            }, 50 - a)

        }

        a = this.progress = this._index / this._frames.length;

        this.hasEventListener("progress") && (b = new createjs.Event("progress"), b.progress = a, this.dispatchEvent(b))

    };

    b._drawNext = function() {

        var a = this._frames[this._index],

            b = a.scale * this._scale,

            c = a.rect,

            g = a.sourceRect,

            f = this._data.images[a.img].getContext("2d");

        return a.funct && a.funct(a.source, a.data), f.save(), f.beginPath(), f.rect(c.x, c.y, c.width, c.height), f.clip(), f.translate(Math.ceil(c.x - g.x * b), Math.ceil(c.y - g.y * b)), f.scale(b, b), a.source.draw(f), f.restore(), ++this._index < this._frames.length

    };

    createjs.SpriteSheetBuilder = createjs.promote(c, "EventDispatcher")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.DisplayObject_constructor();

        "string" == typeof a && (a = document.getElementById(a));

        this.mouseEnabled = !1;

        var b = a.style;

        b.position = "absolute";

        b.transformOrigin = b.WebkitTransformOrigin = b.msTransformOrigin = b.MozTransformOrigin = b.OTransformOrigin = "0% 0%";

        this.htmlElement = a;

        this._oldProps = null

    }

    var b = createjs.extend(c, createjs.DisplayObject);

    b.isVisible = function() {

        return null != this.htmlElement

    };

    b.draw = function() {

        return !0

    };

    b.cache = function() {};

    b.uncache = function() {};

    b.updateCache =

        function() {};

    b.hitTest = function() {};

    b.localToGlobal = function() {};

    b.globalToLocal = function() {};

    b.localToLocal = function() {};

    b.clone = function() {

        throw "DOMElement cannot be cloned.";

    };

    b.toString = function() {

        return "[DOMElement (name=" + this.name + ")]"

    };

    b._tick = function(a) {

        var b = this.getStage();

        b && b.on("drawend", this._handleDrawEnd, this, !0);

        this.DisplayObject__tick(a)

    };

    b._handleDrawEnd = function() {

        var a = this.htmlElement;

        if (a) {

            var a = a.style,

                b = this.getConcatenatedDisplayProps(this._props),

                c = b.matrix,

                g = b.visible ?

                "visible" : "hidden";

            if (g != a.visibility && (a.visibility = g), b.visible) {

                var f = (g = this._oldProps) && g.matrix;

                f && f.equals(c) || (f = "matrix(" + (1E4 * c.a | 0) / 1E4 + "," + (1E4 * c.b | 0) / 1E4 + "," + (1E4 * c.c | 0) / 1E4 + "," + (1E4 * c.d | 0) / 1E4 + "," + (c.tx + .5 | 0), a.transform = a.WebkitTransform = a.OTransform = a.msTransform = f + "," + (c.ty + .5 | 0) + ")", a.MozTransform = f + "px," + (c.ty + .5 | 0) + "px)", g || (g = this._oldProps = new createjs.DisplayProps(!0, 0 / 0)), g.matrix.copy(c));

                g.alpha != b.alpha && (a.opacity = "" + (1E4 * b.alpha | 0) / 1E4, g.alpha = b.alpha)

            }

        }

    };

    createjs.DOMElement =

        createjs.promote(c, "DisplayObject")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {}

    var b = c.prototype;

    b.getBounds = function(a) {

        return a

    };

    b.applyFilter = function(a, b, c, g, f, h, n, m) {

        h = h || a;

        null == n && (n = b);

        null == m && (m = c);

        try {

            var d = a.getImageData(b, c, g, f)

        } catch (l) {

            return !1

        }

        return this._applyFilter(d) ? (h.putImageData(d, n, m), !0) : !1

    };

    b.toString = function() {

        return "[Filter]"

    };

    b.clone = function() {

        return new c

    };

    b._applyFilter = function() {

        return !0

    };

    createjs.Filter = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        (isNaN(a) || 0 > a) && (a = 0);

        (isNaN(b) || 0 > b) && (b = 0);

        (isNaN(c) || 1 > c) && (c = 1);

        this.blurX = 0 | a;

        this.blurY = 0 | b;

        this.quality = 0 | c

    }

    var b = createjs.extend(c, createjs.Filter);

    c.MUL_TABLE = [1, 171, 205, 293, 57, 373, 79, 137, 241, 27, 391, 357, 41, 19, 283, 265, 497, 469, 443, 421, 25, 191, 365, 349, 335, 161, 155, 149, 9, 278, 269, 261, 505, 245, 475, 231, 449, 437, 213, 415, 405, 395, 193, 377, 369, 361, 353, 345, 169, 331, 325, 319, 313, 307, 301, 37, 145, 285, 281, 69, 271, 267, 263, 259, 509, 501, 493, 243, 479, 118, 465, 459, 113, 446, 55, 435, 429, 423, 209,

        413, 51, 403, 199, 393, 97, 3, 379, 375, 371, 367, 363, 359, 355, 351, 347, 43, 85, 337, 333, 165, 327, 323, 5, 317, 157, 311, 77, 305, 303, 75, 297, 294, 73, 289, 287, 71, 141, 279, 277, 275, 68, 135, 67, 133, 33, 262, 260, 129, 511, 507, 503, 499, 495, 491, 61, 121, 481, 477, 237, 235, 467, 232, 115, 457, 227, 451, 7, 445, 221, 439, 218, 433, 215, 427, 425, 211, 419, 417, 207, 411, 409, 203, 202, 401, 399, 396, 197, 49, 389, 387, 385, 383, 95, 189, 47, 187, 93, 185, 23, 183, 91, 181, 45, 179, 89, 177, 11, 175, 87, 173, 345, 343, 341, 339, 337, 21, 167, 83, 331, 329, 327, 163, 81, 323, 321, 319, 159, 79, 315, 313, 39, 155, 309,

        307, 153, 305, 303, 151, 75, 299, 149, 37, 295, 147, 73, 291, 145, 289, 287, 143, 285, 71, 141, 281, 35, 279, 139, 69, 275, 137, 273, 17, 271, 135, 269, 267, 133, 265, 33, 263, 131, 261, 130, 259, 129, 257, 1

    ];

    c.SHG_TABLE = [0, 9, 10, 11, 9, 12, 10, 11, 12, 9, 13, 13, 10, 9, 13, 13, 14, 14, 14, 14, 10, 13, 14, 14, 14, 13, 13, 13, 9, 14, 14, 14, 15, 14, 15, 14, 15, 15, 14, 15, 15, 15, 14, 15, 15, 15, 15, 15, 14, 15, 15, 15, 15, 15, 15, 12, 14, 15, 15, 13, 15, 15, 15, 15, 16, 16, 16, 15, 16, 14, 16, 16, 14, 16, 13, 16, 16, 16, 15, 16, 13, 16, 15, 16, 14, 9, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 14, 16, 16, 15, 16, 16, 10, 16, 15, 16, 14, 16, 16, 14,

        16, 16, 14, 16, 16, 14, 15, 16, 16, 16, 14, 15, 14, 15, 13, 16, 16, 15, 17, 17, 17, 17, 17, 17, 14, 15, 17, 17, 16, 16, 17, 16, 15, 17, 16, 17, 11, 17, 16, 17, 16, 17, 16, 17, 17, 16, 17, 17, 16, 17, 17, 16, 16, 17, 17, 17, 16, 14, 17, 17, 17, 17, 15, 16, 14, 16, 15, 16, 13, 16, 15, 16, 14, 16, 15, 16, 12, 16, 15, 16, 17, 17, 17, 17, 17, 13, 16, 15, 17, 17, 17, 16, 15, 17, 17, 17, 16, 15, 17, 17, 14, 16, 17, 17, 16, 17, 17, 16, 15, 17, 16, 14, 17, 16, 15, 17, 16, 17, 17, 16, 17, 15, 16, 17, 14, 17, 16, 15, 17, 16, 17, 13, 17, 16, 17, 17, 16, 17, 14, 17, 16, 17, 16, 17, 16, 17, 9

    ];

    b.getBounds = function(a) {

        var b = 0 | this.blurX,

            c = 0 | this.blurY;

        if (0 >=

            b && 0 >= c) return a;

        var g = Math.pow(this.quality, .2);

        return (a || new createjs.Rectangle).pad(b * g + 1, c * g + 1, b * g + 1, c * g + 1)

    };

    b.clone = function() {

        return new c(this.blurX, this.blurY, this.quality)

    };

    b.toString = function() {

        return "[BlurFilter]"

    };

    b._applyFilter = function(a) {

        var b = this.blurX >> 1;

        if (isNaN(b) || 0 > b) return !1;

        var e = this.blurY >> 1;

        if (isNaN(e) || 0 > e || 0 == b && 0 == e) return !1;

        var g = this.quality;

        (isNaN(g) || 1 > g) && (g = 1);

        g |= 0;

        3 < g && (g = 3);

        1 > g && (g = 1);

        var f = a.data,

            h, n, m, k = 0,

            l, p, r, q, t, u, v, B, E, A, y = b + b + 1 | 0;

        p = e + e + 1 | 0;

        var x = 0 | a.width;

        a = 0 | a.height;

        var D = x - 1 | 0,

            F = a - 1 | 0,

            M = b + 1 | 0,

            N = e + 1 | 0,

            G = {

                r: 0,

                b: 0,

                g: 0,

                a: 0

            };

        h = G;

        for (m = 1; y > m; m++) h = h.n = {

            r: 0,

            b: 0,

            g: 0,

            a: 0

        };

        h.n = G;

        n = y = {

            r: 0,

            b: 0,

            g: 0,

            a: 0

        };

        for (m = 1; p > m; m++) n = n.n = {

            r: 0,

            b: 0,

            g: 0,

            a: 0

        };

        n.n = y;

        for (var I = 0 | c.MUL_TABLE[b], T = 0 | c.SHG_TABLE[b], V = 0 | c.MUL_TABLE[e], W = 0 | c.SHG_TABLE[e]; 0 < g--;) {

            r = p = 0;

            var K = I,

                H = T;

            for (n = a; - 1 < --n;) {

                q = M * (B = f[0 | p]);

                t = M * (E = f[p + 1 | 0]);

                u = M * (A = f[p + 2 | 0]);

                v = M * (l = f[p + 3 | 0]);

                h = G;

                for (m = M; - 1 < --m;) h.r = B, h.g = E, h.b = A, h.a = l, h = h.n;

                for (m = 1; M > m; m++) k = p + ((m > D ? D : m) << 2) | 0, q += h.r = f[k], t += h.g = f[k + 1], u += h.b = f[k +

                    2], v += h.a = f[k + 3], h = h.n;

                m = G;

                for (h = 0; x > h; h++) f[p++] = q * K >>> H, f[p++] = t * K >>> H, f[p++] = u * K >>> H, f[p++] = v * K >>> H, k = r + ((k = h + b + 1) < D ? k : D) << 2, q -= m.r - (m.r = f[k]), t -= m.g - (m.g = f[k + 1]), u -= m.b - (m.b = f[k + 2]), v -= m.a - (m.a = f[k + 3]), m = m.n;

                r += x

            }

            K = V;

            H = W;

            for (h = 0; x > h; h++) {

                p = h << 2 | 0;

                q = N * (B = f[p]) | 0;

                t = N * (E = f[p + 1 | 0]) | 0;

                u = N * (A = f[p + 2 | 0]) | 0;

                v = N * (l = f[p + 3 | 0]) | 0;

                n = y;

                for (m = 0; N > m; m++) n.r = B, n.g = E, n.b = A, n.a = l, n = n.n;

                l = x;

                for (m = 1; e >= m; m++) p = l + h << 2, q += n.r = f[p], t += n.g = f[p + 1], u += n.b = f[p + 2], v += n.a = f[p + 3], n = n.n, F > m && (l += x);

                if (p = h, m = y, 0 < g)

                    for (n = 0; a > n; n++) k =

                        p << 2, f[k + 3] = l = v * K >>> H, 0 < l ? (f[k] = q * K >>> H, f[k + 1] = t * K >>> H, f[k + 2] = u * K >>> H) : f[k] = f[k + 1] = f[k + 2] = 0, k = h + ((k = n + N) < F ? k : F) * x << 2, q -= m.r - (m.r = f[k]), t -= m.g - (m.g = f[k + 1]), u -= m.b - (m.b = f[k + 2]), v -= m.a - (m.a = f[k + 3]), m = m.n, p += x;

                else

                    for (n = 0; a > n; n++) k = p << 2, f[k + 3] = l = v * K >>> H, 0 < l ? (l = 255 / l, f[k] = (q * K >>> H) * l, f[k + 1] = (t * K >>> H) * l, f[k + 2] = (u * K >>> H) * l) : f[k] = f[k + 1] = f[k + 2] = 0, k = h + ((k = n + N) < F ? k : F) * x << 2, q -= m.r - (m.r = f[k]), t -= m.g - (m.g = f[k + 1]), u -= m.b - (m.b = f[k + 2]), v -= m.a - (m.a = f[k + 3]), m = m.n, p += x

            }

        }

        return !0

    };

    createjs.BlurFilter = createjs.promote(c,

        "Filter")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.alphaMap = a;

        this._mapData = this._alphaMap = null

    }

    var b = createjs.extend(c, createjs.Filter);

    b.clone = function() {

        var a = new c(this.alphaMap);

        return a._alphaMap = this._alphaMap, a._mapData = this._mapData, a

    };

    b.toString = function() {

        return "[AlphaMapFilter]"

    };

    b._applyFilter = function(a) {

        if (!this.alphaMap) return !0;

        if (!this._prepAlphaMap()) return !1;

        a = a.data;

        for (var b = this._mapData, c = 0, g = a.length; g > c; c += 4) a[c + 3] = b[c] || 0;

        return !0

    };

    b._prepAlphaMap = function() {

        if (!this.alphaMap) return !1;

        if (this.alphaMap ==

            this._alphaMap && this._mapData) return !0;

        this._mapData = null;

        var a, b = this._alphaMap = this.alphaMap,

            c = b;

        b instanceof HTMLCanvasElement ? a = c.getContext("2d") : (c = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas"), c.width = b.width, c.height = b.height, a = c.getContext("2d"), a.drawImage(b, 0, 0));

        try {

            var g = a.getImageData(0, 0, b.width, b.height)

        } catch (f) {

            return !1

        }

        return this._mapData = g.data, !0

    };

    createjs.AlphaMapFilter = createjs.promote(c, "Filter")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.mask = a

    }

    var b = createjs.extend(c, createjs.Filter);

    b.applyFilter = function(a, b, c, g, f, h, n, m) {

        return this.mask ? (h = h || a, null == n && (n = b), null == m && (m = c), h.save(), a != h ? !1 : (h.globalCompositeOperation = "destination-in", h.drawImage(this.mask, n, m), h.restore(), !0)) : !0

    };

    b.clone = function() {

        return new c(this.mask)

    };

    b.toString = function() {

        return "[AlphaMaskFilter]"

    };

    createjs.AlphaMaskFilter = createjs.promote(c, "Filter")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c, g, f, h, n, m) {

        this.redMultiplier = null != a ? a : 1;

        this.greenMultiplier = null != b ? b : 1;

        this.blueMultiplier = null != c ? c : 1;

        this.alphaMultiplier = null != g ? g : 1;

        this.redOffset = f || 0;

        this.greenOffset = h || 0;

        this.blueOffset = n || 0;

        this.alphaOffset = m || 0

    }

    var b = createjs.extend(c, createjs.Filter);

    b.toString = function() {

        return "[ColorFilter]"

    };

    b.clone = function() {

        return new c(this.redMultiplier, this.greenMultiplier, this.blueMultiplier, this.alphaMultiplier, this.redOffset, this.greenOffset, this.blueOffset,

            this.alphaOffset)

    };

    b._applyFilter = function(a) {

        a = a.data;

        for (var b = a.length, c = 0; b > c; c += 4) a[c] = a[c] * this.redMultiplier + this.redOffset, a[c + 1] = a[c + 1] * this.greenMultiplier + this.greenOffset, a[c + 2] = a[c + 2] * this.blueMultiplier + this.blueOffset, a[c + 3] = a[c + 3] * this.alphaMultiplier + this.alphaOffset;

        return !0

    };

    createjs.ColorFilter = createjs.promote(c, "Filter")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c, g) {

        this.setColor(a, b, c, g)

    }

    var b = c.prototype;

    c.DELTA_INDEX = [0, .01, .02, .04, .05, .06, .07, .08, .1, .11, .12, .14, .15, .16, .17, .18, .2, .21, .22, .24, .25, .27, .28, .3, .32, .34, .36, .38, .4, .42, .44, .46, .48, .5, .53, .56, .59, .62, .65, .68, .71, .74, .77, .8, .83, .86, .89, .92, .95, .98, 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36, 1.42, 1.48, 1.54, 1.6, 1.66, 1.72, 1.78, 1.84, 1.9, 1.96, 2, 2.12, 2.25, 2.37, 2.5, 2.62, 2.75, 2.87, 3, 3.2, 3.4, 3.6, 3.8, 4, 4.3, 4.7, 4.9, 5, 5.5, 6, 6.5, 6.8, 7, 7.3, 7.5, 7.8, 8, 8.4, 8.7, 9, 9.4, 9.6, 9.8, 10];

    c.IDENTITY_MATRIX = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];

    c.LENGTH = c.IDENTITY_MATRIX.length;

    b.setColor = function(a, b, c, g) {

        return this.reset().adjustColor(a, b, c, g)

    };

    b.reset = function() {

        return this.copy(c.IDENTITY_MATRIX)

    };

    b.adjustColor = function(a, b, c, g) {

        return this.adjustHue(g), this.adjustContrast(b), this.adjustBrightness(a), this.adjustSaturation(c)

    };

    b.adjustBrightness = function(a) {

        return 0 == a || isNaN(a) ? this : (a = this._cleanValue(a, 255), this._multiplyMatrix([1, 0, 0, 0, a, 0, 1, 0, 0, a, 0, 0, 1, 0, a, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]),

            this)

    };

    b.adjustContrast = function(a) {

        if (0 == a || isNaN(a)) return this;

        a = this._cleanValue(a, 100);

        var b;

        return 0 > a ? b = 127 + a / 100 * 127 : (b = a % 1, b = 0 == b ? c.DELTA_INDEX[a] : c.DELTA_INDEX[a << 0] * (1 - b) + c.DELTA_INDEX[(a << 0) + 1] * b, b = 127 * b + 127), this._multiplyMatrix([b / 127, 0, 0, 0, .5 * (127 - b), 0, b / 127, 0, 0, .5 * (127 - b), 0, 0, b / 127, 0, .5 * (127 - b), 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this

    };

    b.adjustSaturation = function(a) {

        if (0 == a || isNaN(a)) return this;

        a = this._cleanValue(a, 100);

        a = 1 + (0 < a ? 3 * a / 100 : a / 100);

        return this._multiplyMatrix([.3086 * (1 - a) + a, .6094 * (1 -

            a), .082 * (1 - a), 0, 0, .3086 * (1 - a), .6094 * (1 - a) + a, .082 * (1 - a), 0, 0, .3086 * (1 - a), .6094 * (1 - a), .082 * (1 - a) + a, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this

    };

    b.adjustHue = function(a) {

        if (0 == a || isNaN(a)) return this;

        a = this._cleanValue(a, 180) / 180 * Math.PI;

        var b = Math.cos(a);

        a = Math.sin(a);

        return this._multiplyMatrix([.213 + .787 * b + -.213 * a, .715 + -.715 * b + -.715 * a, .072 + -.072 * b + .928 * a, 0, 0, .213 + -.213 * b + .143 * a, .715 + b * (1 - .715) + .14 * a, .072 + -.072 * b + -.283 * a, 0, 0, .213 + -.213 * b + -.787 * a, .715 + -.715 * b + .715 * a, .072 + .928 * b + .072 * a, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]), this

    };

    b.concat = function(a) {

        return a = this._fixMatrix(a), a.length != c.LENGTH ? this : (this._multiplyMatrix(a), this)

    };

    b.clone = function() {

        return (new c).copy(this)

    };

    b.toArray = function() {

        for (var a = [], b = 0, e = c.LENGTH; e > b; b++) a[b] = this[b];

        return a

    };

    b.copy = function(a) {

        for (var b = c.LENGTH, e = 0; b > e; e++) this[e] = a[e];

        return this

    };

    b.toString = function() {

        return "[ColorMatrix]"

    };

    b._multiplyMatrix = function(a) {

        var b, c, g, f = [];

        for (b = 0; 5 > b; b++) {

            for (c = 0; 5 > c; c++) f[c] = this[c + 5 * b];

            for (c = 0; 5 > c; c++) {

                var h = 0;

                for (g = 0; 5 > g; g++) h += a[c + 5 * g] * f[g];

                this[c + 5 * b] = h

            }

        }

    };

    b._cleanValue = function(a, b) {

        return Math.min(b, Math.max(-b, a))

    };

    b._fixMatrix = function(a) {

        return a instanceof c && (a = a.toArray()), a.length < c.LENGTH ? a = a.slice(0, a.length).concat(c.IDENTITY_MATRIX.slice(a.length, c.LENGTH)) : a.length > c.LENGTH && (a = a.slice(0, c.LENGTH)), a

    };

    createjs.ColorMatrix = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.matrix = a

    }

    var b = createjs.extend(c, createjs.Filter);

    b.toString = function() {

        return "[ColorMatrixFilter]"

    };

    b.clone = function() {

        return new c(this.matrix)

    };

    b._applyFilter = function(a) {

        var b, c, g, f;

        a = a.data;

        var h = a.length;

        b = this.matrix;

        for (var n = b[0], m = b[1], k = b[2], l = b[3], p = b[4], r = b[5], q = b[6], t = b[7], u = b[8], v = b[9], B = b[10], E = b[11], A = b[12], y = b[13], x = b[14], D = b[15], F = b[16], M = b[17], N = b[18], G = b[19], I = 0; h > I; I += 4) b = a[I], c = a[I + 1], g = a[I + 2], f = a[I + 3], a[I] = b * n + c * m + g * k + f * l + p, a[I + 1] = b * r + c * q + g * t +

            f * u + v, a[I + 2] = b * B + c * E + g * A + f * y + x, a[I + 3] = b * D + c * F + g * M + f * N + G;

        return !0

    };

    createjs.ColorMatrixFilter = createjs.promote(c, "Filter")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "Touch cannot be instantiated";

    }

    c.isSupported = function() {

        return !!("ontouchstart" in window || window.navigator.msPointerEnabled && 0 < window.navigator.msMaxTouchPoints || window.navigator.pointerEnabled && 0 < window.navigator.maxTouchPoints)

    };

    c.enable = function(b, a, d) {

        return b && b.canvas && c.isSupported() ? b.__touch ? !0 : (b.__touch = {

                pointers: {},

                multitouch: !a,

                preventDefault: !d,

                count: 0

            }, "ontouchstart" in window ? c._IOS_enable(b) : (window.navigator.msPointerEnabled || window.navigator.pointerEnabled) &&

            c._IE_enable(b), !0) : !1

    };

    c.disable = function(b) {

        b && ("ontouchstart" in window ? c._IOS_disable(b) : (window.navigator.msPointerEnabled || window.navigator.pointerEnabled) && c._IE_disable(b), delete b.__touch)

    };

    c._IOS_enable = function(b) {

        var a = b.canvas,

            d = b.__touch.f = function(a) {

                c._IOS_handleEvent(b, a)

            };

        a.addEventListener("touchstart", d, !1);

        a.addEventListener("touchmove", d, !1);

        a.addEventListener("touchend", d, !1);

        a.addEventListener("touchcancel", d, !1)

    };

    c._IOS_disable = function(b) {

        var a = b.canvas;

        a && (b = b.__touch.f,

            a.removeEventListener("touchstart", b, !1), a.removeEventListener("touchmove", b, !1), a.removeEventListener("touchend", b, !1), a.removeEventListener("touchcancel", b, !1))

    };

    c._IOS_handleEvent = function(b, a) {

        if (b) {

            b.__touch.preventDefault && a.preventDefault && a.preventDefault();

            for (var c = a.changedTouches, e = a.type, g = 0, f = c.length; f > g; g++) {

                var h = c[g],

                    n = h.identifier;

                h.target == b.canvas && ("touchstart" == e ? this._handleStart(b, n, a, h.pageX, h.pageY) : "touchmove" == e ? this._handleMove(b, n, a, h.pageX, h.pageY) : ("touchend" == e ||

                    "touchcancel" == e) && this._handleEnd(b, n, a))

            }

        }

    };

    c._IE_enable = function(b) {

        var a = b.canvas,

            d = b.__touch.f = function(a) {

                c._IE_handleEvent(b, a)

            };

        void 0 === window.navigator.pointerEnabled ? (a.addEventListener("MSPointerDown", d, !1), window.addEventListener("MSPointerMove", d, !1), window.addEventListener("MSPointerUp", d, !1), window.addEventListener("MSPointerCancel", d, !1), b.__touch.preventDefault && (a.style.msTouchAction = "none")) : (a.addEventListener("pointerdown", d, !1), window.addEventListener("pointermove", d, !1), window.addEventListener("pointerup",

            d, !1), window.addEventListener("pointercancel", d, !1), b.__touch.preventDefault && (a.style.touchAction = "none"));

        b.__touch.activeIDs = {}

    };

    c._IE_disable = function(b) {

        var a = b.__touch.f;

        void 0 === window.navigator.pointerEnabled ? (window.removeEventListener("MSPointerMove", a, !1), window.removeEventListener("MSPointerUp", a, !1), window.removeEventListener("MSPointerCancel", a, !1), b.canvas && b.canvas.removeEventListener("MSPointerDown", a, !1)) : (window.removeEventListener("pointermove", a, !1), window.removeEventListener("pointerup",

            a, !1), window.removeEventListener("pointercancel", a, !1), b.canvas && b.canvas.removeEventListener("pointerdown", a, !1))

    };

    c._IE_handleEvent = function(b, a) {

        if (b) {

            b.__touch.preventDefault && a.preventDefault && a.preventDefault();

            var c = a.type,

                e = a.pointerId,

                g = b.__touch.activeIDs;

            "MSPointerDown" == c || "pointerdown" == c ? a.srcElement == b.canvas && (g[e] = !0, this._handleStart(b, e, a, a.pageX, a.pageY)) : g[e] && ("MSPointerMove" == c || "pointermove" == c ? this._handleMove(b, e, a, a.pageX, a.pageY) : ("MSPointerUp" == c || "MSPointerCancel" == c ||

                "pointerup" == c || "pointercancel" == c) && (delete g[e], this._handleEnd(b, e, a)))

        }

    };

    c._handleStart = function(b, a, c, e, g) {

        var d = b.__touch;

        if (d.multitouch || !d.count) {

            var h = d.pointers;

            h[a] || (h[a] = !0, d.count++, b._handlePointerDown(a, c, e, g))

        }

    };

    c._handleMove = function(b, a, c, e, g) {

        b.__touch.pointers[a] && b._handlePointerMove(a, c, e, g)

    };

    c._handleEnd = function(b, a, c) {

        var d = b.__touch,

            g = d.pointers;

        g[a] && (d.count--, b._handlePointerUp(a, c, !0), delete g[a])

    };

    createjs.Touch = c

})();

this.createjs = this.createjs || {};

(function() {

    var c = createjs.EaselJS = createjs.EaselJS || {};

    c.version = "0.8.2";

    c.buildDate = "Thu, 26 Nov 2015 20:44:34 GMT"

})();

this.createjs = this.createjs || {};

(function() {

    var c = createjs.SoundJS = createjs.SoundJS || {};

    c.version = "0.6.2";

    c.buildDate = "Thu, 26 Nov 2015 20:44:31 GMT"

})();

this.createjs = this.createjs || {};

createjs.extend = function(c, b) {

    function a() {

        this.constructor = c

    }

    return a.prototype = b.prototype, c.prototype = new a

};

this.createjs = this.createjs || {};

createjs.promote = function(c, b) {

    var a = c.prototype,

        d = Object.getPrototypeOf && Object.getPrototypeOf(a) || a.__proto__;

    if (d) {

        a[(b += "_") + "constructor"] = d.constructor;

        for (var e in d) a.hasOwnProperty(e) && "function" == typeof d[e] && (a[b + e] = d[e])

    }

    return c

};

this.createjs = this.createjs || {};

createjs.indexOf = function(c, b) {

    for (var a = 0, d = c.length; d > a; a++)

        if (b === c[a]) return a;

    return -1

};

this.createjs = this.createjs || {};

(function() {

    createjs.proxy = function(c, b) {

        var a = Array.prototype.slice.call(arguments, 2);

        return function() {

            return c.apply(b, Array.prototype.slice.call(arguments, 0).concat(a))

        }

    }

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "BrowserDetect cannot be instantiated";

    }

    var b = c.agent = window.navigator.userAgent;

    c.isWindowPhone = -1 < b.indexOf("IEMobile") || -1 < b.indexOf("Windows Phone");

    c.isFirefox = -1 < b.indexOf("Firefox");

    c.isOpera = null != window.opera;

    c.isChrome = -1 < b.indexOf("Chrome");

    c.isIOS = (-1 < b.indexOf("iPod") || -1 < b.indexOf("iPhone") || -1 < b.indexOf("iPad")) && !c.isWindowPhone;

    c.isAndroid = -1 < b.indexOf("Android") && !c.isWindowPhone;

    c.isBlackberry = -1 < b.indexOf("Blackberry");

    createjs.BrowserDetect = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this._captureListeners = this._listeners = null

    }

    var b = c.prototype;

    c.initialize = function(a) {

        a.addEventListener = b.addEventListener;

        a.on = b.on;

        a.removeEventListener = a.off = b.removeEventListener;

        a.removeAllEventListeners = b.removeAllEventListeners;

        a.hasEventListener = b.hasEventListener;

        a.dispatchEvent = b.dispatchEvent;

        a._dispatchEvent = b._dispatchEvent;

        a.willTrigger = b.willTrigger

    };

    b.addEventListener = function(a, b, c) {

        var d;

        d = c ? this._captureListeners = this._captureListeners || {} : this._listeners =

            this._listeners || {};

        var e = d[a];

        return e && this.removeEventListener(a, b, c), e = d[a], e ? e.push(b) : d[a] = [b], b

    };

    b.on = function(a, b, c, g, f, h) {

        return b.handleEvent && (c = c || b, b = b.handleEvent), c = c || this, this.addEventListener(a, function(a) {

            b.call(c, a, f);

            g && a.remove()

        }, h)

    };

    b.removeEventListener = function(a, b, c) {

        if (c = c ? this._captureListeners : this._listeners) {

            var d = c[a];

            if (d)

                for (var e = 0, h = d.length; h > e; e++)

                    if (d[e] == b) {

                        1 == h ? delete c[a] : d.splice(e, 1);

                        break

                    }

        }

    };

    b.off = b.removeEventListener;

    b.removeAllEventListeners = function(a) {

        a ?

            (this._listeners && delete this._listeners[a], this._captureListeners && delete this._captureListeners[a]) : this._listeners = this._captureListeners = null

    };

    b.dispatchEvent = function(a, b, c) {

        if ("string" == typeof a) {

            var d = this._listeners;

            if (!(b || d && d[a])) return !0;

            a = new createjs.Event(a, b, c)

        } else a.target && a.clone && (a = a.clone());

        try {

            a.target = this

        } catch (f) {}

        if (a.bubbles && this.parent) {

            c = this;

            for (b = [c]; c.parent;) b.push(c = c.parent);

            d = b.length;

            for (c = d - 1; 0 <= c && !a.propagationStopped; c--) b[c]._dispatchEvent(a, 1 + (0 == c));

            for (c = 1; d > c && !a.propagationStopped; c++) b[c]._dispatchEvent(a, 3)

        } else this._dispatchEvent(a, 2);

        return !a.defaultPrevented

    };

    b.hasEventListener = function(a) {

        var b = this._listeners,

            c = this._captureListeners;

        return !!(b && b[a] || c && c[a])

    };

    b.willTrigger = function(a) {

        for (var b = this; b;) {

            if (b.hasEventListener(a)) return !0;

            b = b.parent

        }

        return !1

    };

    b.toString = function() {

        return "[EventDispatcher]"

    };

    b._dispatchEvent = function(a, b) {

        var c, d = 1 == b ? this._captureListeners : this._listeners;

        if (a && d && (d = d[a.type]) && (c = d.length)) {

            try {

                a.currentTarget =

                    this

            } catch (n) {}

            try {

                a.eventPhase = b

            } catch (n) {}

            a.removed = !1;

            for (var d = d.slice(), f = 0; c > f && !a.immediatePropagationStopped; f++) {

                var h = d[f];

                h.handleEvent ? h.handleEvent(a) : h(a);

                a.removed && (this.off(a.type, h, 1 == b), a.removed = !1)

            }

        }

    };

    createjs.EventDispatcher = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.type = a;

        this.currentTarget = this.target = null;

        this.eventPhase = 0;

        this.bubbles = !!b;

        this.cancelable = !!c;

        this.timeStamp = (new Date).getTime();

        this.removed = this.immediatePropagationStopped = this.propagationStopped = this.defaultPrevented = !1

    }

    var b = c.prototype;

    b.preventDefault = function() {

        this.defaultPrevented = this.cancelable && !0

    };

    b.stopPropagation = function() {

        this.propagationStopped = !0

    };

    b.stopImmediatePropagation = function() {

        this.immediatePropagationStopped = this.propagationStopped = !0

    };

    b.remove = function() {

        this.removed = !0

    };

    b.clone = function() {

        return new c(this.type, this.bubbles, this.cancelable)

    };

    b.set = function(a) {

        for (var b in a) this[b] = a[b];

        return this

    };

    b.toString = function() {

        return "[Event (type=" + this.type + ")]"

    };

    createjs.Event = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(b, a, c) {

        this.Event_constructor("error");

        this.title = b;

        this.message = a;

        this.data = c

    }

    createjs.extend(c, createjs.Event).clone = function() {

        return new createjs.ErrorEvent(this.title, this.message, this.data)

    };

    createjs.ErrorEvent = createjs.promote(c, "Event")

})();

this.createjs = this.createjs || {};

(function() {

    function c(b, a) {

        this.Event_constructor("progress");

        this.loaded = b;

        this.total = null == a ? 1 : a;

        this.progress = 0 == a ? 0 : this.loaded / this.total

    }

    createjs.extend(c, createjs.Event).clone = function() {

        return new createjs.ProgressEvent(this.loaded, this.total)

    };

    createjs.ProgressEvent = createjs.promote(c, "Event")

})(window);

this.createjs = this.createjs || {};

(function() {

    function c() {

        this.id = this.type = this.src = null;

        this.maintainOrder = !1;

        this.data = this.callback = null;

        this.method = createjs.LoadItem.GET;

        this.headers = this.values = null;

        this.withCredentials = !1;

        this.crossOrigin = this.mimeType = null;

        this.loadTimeout = a.LOAD_TIMEOUT_DEFAULT

    }

    var b = c.prototype = {},

        a = c;

    a.LOAD_TIMEOUT_DEFAULT = 8E3;

    a.create = function(b) {

        if ("string" == typeof b) {

            var d = new c;

            return d.src = b, d

        }

        if (b instanceof a) return b;

        if (b instanceof Object && b.src) return null == b.loadTimeout && (b.loadTimeout = a.LOAD_TIMEOUT_DEFAULT),

            b;

        throw Error("Type not recognized.");

    };

    b.set = function(a) {

        for (var b in a) this[b] = a[b];

        return this

    };

    createjs.LoadItem = a

})();

(function() {

    var c = {

        ABSOLUTE_PATT: /^(?:\w+:)?\/{2}/i,

        RELATIVE_PATT: /^[.\/]*?\//i,

        EXTENSION_PATT: /\/?[^\/]+\.(\w{1,5})$/i,

        parseURI: function(b) {

            var a = {

                absolute: !1,

                relative: !1

            };

            if (null == b) return a;

            var d = b.indexOf("?"); - 1 < d && (b = b.substr(0, d));

            var e;

            return c.ABSOLUTE_PATT.test(b) ? a.absolute = !0 : c.RELATIVE_PATT.test(b) && (a.relative = !0), (e = b.match(c.EXTENSION_PATT)) && (a.extension = e[1].toLowerCase()), a

        },

        formatQueryString: function(b, a) {

            if (null == b) throw Error("You must specify data.");

            var c = [],

                e;

            for (e in b) c.push(e +

                "=" + escape(b[e]));

            return a && (c = c.concat(a)), c.join("&")

        },

        buildPath: function(b, a) {

            if (null == a) return b;

            var c = [],

                e = b.indexOf("?");

            if (-1 != e) var g = b.slice(e + 1),

                c = c.concat(g.split("&"));

            return -1 != e ? b.slice(0, e) + "?" + this.formatQueryString(a, c) : b + "?" + this.formatQueryString(a, c)

        },

        isCrossDomain: function(b) {

            var a = document.createElement("a");

            a.href = b.src;

            b = document.createElement("a");

            b.href = location.href;

            return "" != a.hostname && (a.port != b.port || a.protocol != b.protocol || a.hostname != b.hostname)

        },

        isLocal: function(b) {

            var a =

                document.createElement("a");

            return a.href = b.src, "" == a.hostname && "file:" == a.protocol

        },

        isBinary: function(b) {

            switch (b) {

                case createjs.AbstractLoader.IMAGE:

                case createjs.AbstractLoader.BINARY:

                    return !0;

                default:

                    return !1

            }

        },

        isImageTag: function(b) {

            return b instanceof HTMLImageElement

        },

        isAudioTag: function(b) {

            return window.HTMLAudioElement ? b instanceof HTMLAudioElement : !1

        },

        isVideoTag: function(b) {

            return window.HTMLVideoElement ? b instanceof HTMLVideoElement : !1

        },

        isText: function(b) {

            switch (b) {

                case createjs.AbstractLoader.TEXT:

                case createjs.AbstractLoader.JSON:

                case createjs.AbstractLoader.MANIFEST:

                case createjs.AbstractLoader.XML:

                case createjs.AbstractLoader.CSS:

                case createjs.AbstractLoader.SVG:

                case createjs.AbstractLoader.JAVASCRIPT:

                case createjs.AbstractLoader.SPRITESHEET:

                    return !0;

                default:

                    return !1

            }

        },

        getTypeByExtension: function(b) {

            if (null == b) return createjs.AbstractLoader.TEXT;

            switch (b.toLowerCase()) {

                case "jpeg":

                case "jpg":

                case "gif":

                case "png":

                case "webp":

                case "bmp":

                    return createjs.AbstractLoader.IMAGE;

                case "ogg":

                case "mp3":

                case "webm":

                    return createjs.AbstractLoader.SOUND;

                case "mp4":

                case "webm":

                case "ts":

                    return createjs.AbstractLoader.VIDEO;

                case "json":

                    return createjs.AbstractLoader.JSON;

                case "xml":

                    return createjs.AbstractLoader.XML;

                case "css":

                    return createjs.AbstractLoader.CSS;

                case "js":

                    return createjs.AbstractLoader.JAVASCRIPT;

                case "svg":

                    return createjs.AbstractLoader.SVG;

                default:

                    return createjs.AbstractLoader.TEXT

            }

        }

    };

    createjs.RequestUtils = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.EventDispatcher_constructor();

        this.canceled = this.loaded = !1;

        this.progress = 0;

        this.type = c;

        this.resultFormatter = null;

        this._item = a ? createjs.LoadItem.create(a) : null;

        this._preferXHR = b;

        this._tag = this._tagSrcAttribute = this._loadedItems = this._rawResult = this._result = null

    }

    var b = createjs.extend(c, createjs.EventDispatcher);

    c.POST = "POST";

    c.GET = "GET";

    c.BINARY = "binary";

    c.CSS = "css";

    c.IMAGE = "image";

    c.JAVASCRIPT = "javascript";

    c.JSON = "json";

    c.JSONP = "jsonp";

    c.MANIFEST = "manifest";

    c.SOUND =

        "sound";

    c.VIDEO = "video";

    c.SPRITESHEET = "spritesheet";

    c.SVG = "svg";

    c.TEXT = "text";

    c.XML = "xml";

    b.getItem = function() {

        return this._item

    };

    b.getResult = function(a) {

        return a ? this._rawResult : this._result

    };

    b.getTag = function() {

        return this._tag

    };

    b.setTag = function(a) {

        this._tag = a

    };

    b.load = function() {

        this._createRequest();

        this._request.on("complete", this, this);

        this._request.on("progress", this, this);

        this._request.on("loadStart", this, this);

        this._request.on("abort", this, this);

        this._request.on("timeout", this, this);

        this._request.on("error",

            this, this);

        var a = new createjs.Event("initialize");

        a.loader = this._request;

        this.dispatchEvent(a);

        this._request.load()

    };

    b.cancel = function() {

        this.canceled = !0;

        this.destroy()

    };

    b.destroy = function() {

        this._request && (this._request.removeAllEventListeners(), this._request.destroy());

        this._loadItems = this._result = this._rawResult = this._item = this._request = null;

        this.removeAllEventListeners()

    };

    b.getLoadedItems = function() {

        return this._loadedItems

    };

    b._createRequest = function() {

        this._request = this._preferXHR ? new createjs.XHRRequest(this._item) :

            new createjs.TagRequest(this._item, this._tag || this._createTag(), this._tagSrcAttribute)

    };

    b._createTag = function() {

        return null

    };

    b._sendLoadStart = function() {

        this._isCanceled() || this.dispatchEvent("loadstart")

    };

    b._sendProgress = function(a) {

        if (!this._isCanceled()) {

            var b = null;

            "number" == typeof a ? (this.progress = a, b = new createjs.ProgressEvent(this.progress)) : (b = a, this.progress = a.loaded / a.total, b.progress = this.progress, (isNaN(this.progress) || 1 / 0 == this.progress) && (this.progress = 0));

            this.hasEventListener("progress") &&

                this.dispatchEvent(b)

        }

    };

    b._sendComplete = function() {

        if (!this._isCanceled()) {

            this.loaded = !0;

            var a = new createjs.Event("complete");

            a.rawResult = this._rawResult;

            null != this._result && (a.result = this._result);

            this.dispatchEvent(a)

        }

    };

    b._sendError = function(a) {

        !this._isCanceled() && this.hasEventListener("error") && (null == a && (a = new createjs.ErrorEvent("PRELOAD_ERROR_EMPTY")), this.dispatchEvent(a))

    };

    b._isCanceled = function() {

        return null == window.createjs || this.canceled ? !0 : !1

    };

    b.resultFormatter = null;

    b.handleEvent = function(a) {

        switch (a.type) {

            case "complete":

                this._rawResult =

                    a.target._response;

                a = this.resultFormatter && this.resultFormatter(this);

                a instanceof Function ? a.call(this, createjs.proxy(this._resultFormatSuccess, this), createjs.proxy(this._resultFormatFailed, this)) : (this._result = a || this._rawResult, this._sendComplete());

                break;

            case "progress":

                this._sendProgress(a);

                break;

            case "error":

                this._sendError(a);

                break;

            case "loadstart":

                this._sendLoadStart();

                break;

            case "abort":

            case "timeout":

                this._isCanceled() || this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_" + a.type.toUpperCase() +

                    "_ERROR"))

        }

    };

    b._resultFormatSuccess = function(a) {

        this._result = a;

        this._sendComplete()

    };

    b._resultFormatFailed = function(a) {

        this._sendError(a)

    };

    b.buildPath = function(a, b) {

        return createjs.RequestUtils.buildPath(a, b)

    };

    b.toString = function() {

        return "[PreloadJS AbstractLoader]"

    };

    createjs.AbstractLoader = createjs.promote(c, "EventDispatcher")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.AbstractLoader_constructor(a, b, c);

        this.resultFormatter = this._formatResult;

        this._tagSrcAttribute = "src";

        this.on("initialize", this._updateXHR, this)

    }

    var b = createjs.extend(c, createjs.AbstractLoader);

    b.load = function() {

        this._tag || (this._tag = this._createTag(this._item.src));

        this._tag.preload = "auto";

        this._tag.load();

        this.AbstractLoader_load()

    };

    b._createTag = function() {};

    b._createRequest = function() {

        this._request = this._preferXHR ? new createjs.XHRRequest(this._item) : new createjs.MediaTagRequest(this._item,

            this._tag || this._createTag(), this._tagSrcAttribute)

    };

    b._updateXHR = function(a) {

        a.loader.setResponseType && a.loader.setResponseType("blob")

    };

    b._formatResult = function(a) {

        if (this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler), this._tag.onstalled = null, this._preferXHR) {

            var b = window.URL || window.webkitURL,

                c = a.getResult(!0);

            a.getTag().src = b.createObjectURL(c)

        }

        return a.getTag()

    };

    createjs.AbstractMediaLoader = createjs.promote(c, "AbstractLoader")

})();

this.createjs = this.createjs || {};

(function() {

    var c = function(a) {

            this._item = a

        },

        b = createjs.extend(c, createjs.EventDispatcher);

    b.load = function() {};

    b.destroy = function() {};

    b.cancel = function() {};

    createjs.AbstractRequest = createjs.promote(c, "EventDispatcher")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.AbstractRequest_constructor(a);

        this._tag = b;

        this._tagSrcAttribute = c;

        this._loadedHandler = createjs.proxy(this._handleTagComplete, this);

        this._addedToDOM = !1;

        this._startTagVisibility = null

    }

    var b = createjs.extend(c, createjs.AbstractRequest);

    b.load = function() {

        this._tag.onload = createjs.proxy(this._handleTagComplete, this);

        this._tag.onreadystatechange = createjs.proxy(this._handleReadyStateChange, this);

        this._tag.onerror = createjs.proxy(this._handleError, this);

        var a = new createjs.Event("initialize");

        a.loader = this._tag;

        this.dispatchEvent(a);

        this._hideTag();

        this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout);

        this._tag[this._tagSrcAttribute] = this._item.src;

        null == this._tag.parentNode && (window.document.body.appendChild(this._tag), this._addedToDOM = !0)

    };

    b.destroy = function() {

        this._clean();

        this._tag = null;

        this.AbstractRequest_destroy()

    };

    b._handleReadyStateChange = function() {

        clearTimeout(this._loadTimeout);

        var a = this._tag;

        "loaded" != a.readyState && "complete" != a.readyState ||

            this._handleTagComplete()

    };

    b._handleError = function() {

        this._clean();

        this.dispatchEvent("error")

    };

    b._handleTagComplete = function() {

        this._rawResult = this._tag;

        this._result = this.resultFormatter && this.resultFormatter(this) || this._rawResult;

        this._clean();

        this._showTag();

        this.dispatchEvent("complete")

    };

    b._handleTimeout = function() {

        this._clean();

        this.dispatchEvent(new createjs.Event("timeout"))

    };

    b._clean = function() {

        this._tag.onload = null;

        this._tag.onreadystatechange = null;

        this._tag.onerror = null;

        this._addedToDOM &&

            null != this._tag.parentNode && this._tag.parentNode.removeChild(this._tag);

        clearTimeout(this._loadTimeout)

    };

    b._hideTag = function() {

        this._startTagVisibility = this._tag.style.visibility;

        this._tag.style.visibility = "hidden"

    };

    b._showTag = function() {

        this._tag.style.visibility = this._startTagVisibility

    };

    b._handleStalled = function() {};

    createjs.TagRequest = createjs.promote(c, "AbstractRequest")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c) {

        this.AbstractRequest_constructor(a);

        this._tag = b;

        this._tagSrcAttribute = c;

        this._loadedHandler = createjs.proxy(this._handleTagComplete, this)

    }

    var b = createjs.extend(c, createjs.TagRequest);

    b.load = function() {

        var a = createjs.proxy(this._handleStalled, this);

        this._stalledCallback = a;

        var b = createjs.proxy(this._handleProgress, this);

        this._handleProgress = b;

        this._tag.addEventListener("stalled", a);

        this._tag.addEventListener("progress", b);

        this._tag.addEventListener && this._tag.addEventListener("canplaythrough",

            this._loadedHandler, !1);

        this.TagRequest_load()

    };

    b._handleReadyStateChange = function() {

        clearTimeout(this._loadTimeout);

        var a = this._tag;

        "loaded" != a.readyState && "complete" != a.readyState || this._handleTagComplete()

    };

    b._handleStalled = function() {};

    b._handleProgress = function(a) {

        !a || 0 < a.loaded && 0 == a.total || (a = new createjs.ProgressEvent(a.loaded, a.total), this.dispatchEvent(a))

    };

    b._clean = function() {

        this._tag.removeEventListener && this._tag.removeEventListener("canplaythrough", this._loadedHandler);

        this._tag.removeEventListener("stalled",

            this._stalledCallback);

        this._tag.removeEventListener("progress", this._progressCallback);

        this.TagRequest__clean()

    };

    createjs.MediaTagRequest = createjs.promote(c, "TagRequest")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.AbstractRequest_constructor(a);

        this._loadTimeout = this._request = null;

        this._xhrLevel = 1;

        this._rawResponse = this._response = null;

        this._canceled = !1;

        this._handleLoadStartProxy = createjs.proxy(this._handleLoadStart, this);

        this._handleProgressProxy = createjs.proxy(this._handleProgress, this);

        this._handleAbortProxy = createjs.proxy(this._handleAbort, this);

        this._handleErrorProxy = createjs.proxy(this._handleError, this);

        this._handleTimeoutProxy = createjs.proxy(this._handleTimeout, this);

        this._handleLoadProxy =

            createjs.proxy(this._handleLoad, this);

        this._handleReadyStateChangeProxy = createjs.proxy(this._handleReadyStateChange, this);

        !this._createXHR(a)

    }

    var b = createjs.extend(c, createjs.AbstractRequest);

    c.ACTIVEX_VERSIONS = "Msxml2.XMLHTTP.6.0 Msxml2.XMLHTTP.5.0 Msxml2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP".split(" ");

    b.getResult = function(a) {

        return a && this._rawResponse ? this._rawResponse : this._response

    };

    b.cancel = function() {

        this.canceled = !0;

        this._clean();

        this._request.abort()

    };

    b.load = function() {

        if (null ==

            this._request) return void this._handleError();

        null != this._request.addEventListener ? (this._request.addEventListener("loadstart", this._handleLoadStartProxy, !1), this._request.addEventListener("progress", this._handleProgressProxy, !1), this._request.addEventListener("abort", this._handleAbortProxy, !1), this._request.addEventListener("error", this._handleErrorProxy, !1), this._request.addEventListener("timeout", this._handleTimeoutProxy, !1), this._request.addEventListener("load", this._handleLoadProxy, !1), this._request.addEventListener("readystatechange",

            this._handleReadyStateChangeProxy, !1)) : (this._request.onloadstart = this._handleLoadStartProxy, this._request.onprogress = this._handleProgressProxy, this._request.onabort = this._handleAbortProxy, this._request.onerror = this._handleErrorProxy, this._request.ontimeout = this._handleTimeoutProxy, this._request.onload = this._handleLoadProxy, this._request.onreadystatechange = this._handleReadyStateChangeProxy);

        1 == this._xhrLevel && (this._loadTimeout = setTimeout(createjs.proxy(this._handleTimeout, this), this._item.loadTimeout));

        try {

            this._item.values && this._item.method != createjs.AbstractLoader.GET ? this._item.method == createjs.AbstractLoader.POST && this._request.send(createjs.RequestUtils.formatQueryString(this._item.values)) : this._request.send()

        } catch (a) {

            this.dispatchEvent(new createjs.ErrorEvent("XHR_SEND", null, a))

        }

    };

    b.setResponseType = function(a) {

        "blob" === a && (a = window.URL ? "blob" : "arraybuffer", this._responseType = a);

        this._request.responseType = a

    };

    b.getAllResponseHeaders = function() {

        return this._request.getAllResponseHeaders instanceof

        Function ? this._request.getAllResponseHeaders() : null

    };

    b.getResponseHeader = function(a) {

        return this._request.getResponseHeader instanceof Function ? this._request.getResponseHeader(a) : null

    };

    b._handleProgress = function(a) {

        !a || 0 < a.loaded && 0 == a.total || (a = new createjs.ProgressEvent(a.loaded, a.total), this.dispatchEvent(a))

    };

    b._handleLoadStart = function() {

        clearTimeout(this._loadTimeout);

        this.dispatchEvent("loadstart")

    };

    b._handleAbort = function(a) {

        this._clean();

        this.dispatchEvent(new createjs.ErrorEvent("XHR_ABORTED",

            null, a))

    };

    b._handleError = function(a) {

        this._clean();

        this.dispatchEvent(new createjs.ErrorEvent(a.message))

    };

    b._handleReadyStateChange = function() {

        4 == this._request.readyState && this._handleLoad()

    };

    b._handleLoad = function() {

        if (!this.loaded) {

            this.loaded = !0;

            var a = this._checkError();

            if (a) return void this._handleError(a);

            if (this._response = this._getResponse(), "arraybuffer" === this._responseType) try {

                this._response = new Blob([this._response])

            } catch (d) {

                if (window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||

                    window.MozBlobBuilder || window.MSBlobBuilder, "TypeError" === d.name && window.BlobBuilder) a = new BlobBuilder, a.append(this._response), this._response = a.getBlob()

            }

            this._clean();

            this.dispatchEvent(new createjs.Event("complete"))

        }

    };

    b._handleTimeout = function(a) {

        this._clean();

        this.dispatchEvent(new createjs.ErrorEvent("PRELOAD_TIMEOUT", null, a))

    };

    b._checkError = function() {

        var a = parseInt(this._request.status);

        switch (a) {

            case 404:

            case 0:

                return Error(a)

        }

        return null

    };

    b._getResponse = function() {

        if (null != this._response) return this._response;

        if (null != this._request.response) return this._request.response;

        try {

            if (null != this._request.responseText) return this._request.responseText

        } catch (a) {}

        try {

            if (null != this._request.responseXML) return this._request.responseXML

        } catch (a) {}

        return null

    };

    b._createXHR = function(a) {

        var b = createjs.RequestUtils.isCrossDomain(a),

            c = {},

            g = null;

        if (window.XMLHttpRequest) g = new XMLHttpRequest, b && void 0 === g.withCredentials && window.XDomainRequest && (g = new XDomainRequest);

        else {

            for (var f = 0, h = s.ACTIVEX_VERSIONS.length; h > f; f++) {

                var n =

                    s.ACTIVEX_VERSIONS[f];

                try {

                    g = new ActiveXObject(n);

                    break

                } catch (k) {}

            }

            if (null == g) return !1

        }

        null == a.mimeType && createjs.RequestUtils.isText(a.type) && (a.mimeType = "text/plain; charset=utf-8");

        a.mimeType && g.overrideMimeType && g.overrideMimeType(a.mimeType);

        this._xhrLevel = "string" == typeof g.responseType ? 2 : 1;

        f = null;

        if (f = a.method == createjs.AbstractLoader.GET ? createjs.RequestUtils.buildPath(a.src, a.values) : a.src, g.open(a.method || createjs.AbstractLoader.GET, f, !0), b && g instanceof XMLHttpRequest && 1 == this._xhrLevel &&

            (c.Origin = location.origin), a.values && a.method == createjs.AbstractLoader.POST && (c["Content-Type"] = "application/x-www-form-urlencoded"), b || c["X-Requested-With"] || (c["X-Requested-With"] = "XMLHttpRequest"), a.headers)

            for (var m in a.headers) c[m] = a.headers[m];

        for (m in c) g.setRequestHeader(m, c[m]);

        return g instanceof XMLHttpRequest && void 0 !== a.withCredentials && (g.withCredentials = a.withCredentials), this._request = g, !0

    };

    b._clean = function() {

        clearTimeout(this._loadTimeout);

        null != this._request.removeEventListener ?

            (this._request.removeEventListener("loadstart", this._handleLoadStartProxy), this._request.removeEventListener("progress", this._handleProgressProxy), this._request.removeEventListener("abort", this._handleAbortProxy), this._request.removeEventListener("error", this._handleErrorProxy), this._request.removeEventListener("timeout", this._handleTimeoutProxy), this._request.removeEventListener("load", this._handleLoadProxy), this._request.removeEventListener("readystatechange", this._handleReadyStateChangeProxy)) :

            (this._request.onloadstart = null, this._request.onprogress = null, this._request.onabort = null, this._request.onerror = null, this._request.ontimeout = null, this._request.onload = null, this._request.onreadystatechange = null)

    };

    b.toString = function() {

        return "[PreloadJS XHRRequest]"

    };

    createjs.XHRRequest = createjs.promote(c, "AbstractRequest")

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b) {

        this.AbstractMediaLoader_constructor(a, b, createjs.AbstractLoader.SOUND);

        createjs.RequestUtils.isAudioTag(a) ? this._tag = a : createjs.RequestUtils.isAudioTag(a.src) ? this._tag = a : createjs.RequestUtils.isAudioTag(a.tag) && (this._tag = createjs.RequestUtils.isAudioTag(a) ? a : a.src);

        null != this._tag && (this._preferXHR = !1)

    }

    var b = createjs.extend(c, createjs.AbstractMediaLoader);

    c.canLoadItem = function(a) {

        return a.type == createjs.AbstractLoader.SOUND

    };

    b._createTag = function(a) {

        var b = document.createElement("audio");

        return b.autoplay = !1, b.preload = "none", b.src = a, b

    };

    createjs.SoundLoader = createjs.promote(c, "AbstractMediaLoader")

})();

this.createjs = this.createjs || {};

(function() {

    var c = function() {

            this.duration = this.startTime = this.pan = this.volume = this.loop = this.offset = this.delay = this.interrupt = null

        },

        b = c.prototype = {};

    c.create = function(a) {

        if (a instanceof c || a instanceof Object) {

            var b = new createjs.PlayPropsConfig;

            return b.set(a), b

        }

        throw Error("Type not recognized.");

    };

    b.set = function(a) {

        for (var b in a) this[b] = a[b];

        return this

    };

    b.toString = function() {

        return "[PlayPropsConfig]"

    };

    createjs.PlayPropsConfig = c

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "Sound cannot be instantiated";

    }



    function b(a, b) {

        this.init(a, b)

    }

    c.INTERRUPT_ANY = "any";

    c.INTERRUPT_EARLY = "early";

    c.INTERRUPT_LATE = "late";

    c.INTERRUPT_NONE = "none";

    c.PLAY_INITED = "playInited";

    c.PLAY_SUCCEEDED = "playSucceeded";

    c.PLAY_INTERRUPTED = "playInterrupted";

    c.PLAY_FINISHED = "playFinished";

    c.PLAY_FAILED = "playFailed";

    c.SUPPORTED_EXTENSIONS = "mp3 ogg opus mpeg wav m4a mp4 aiff wma mid".split(" ");

    c.EXTENSION_MAP = {

        m4a: "mp4"

    };

    c.FILE_PATTERN = /^(?:(\w+:)\/{2}(\w+(?:\.\w+)*\/?))?([\/.]*?(?:[^?]+)?\/)?((?:[^\/?]+)\.(\w+))(?:\?(\S+)?)?$/;

    c.defaultInterruptBehavior = c.INTERRUPT_NONE;

    c.alternateExtensions = [];

    c.activePlugin = null;

    c._masterVolume = 1;

    Object.defineProperty(c, "volume", {

        get: function() {

            return this._masterVolume

        },

        set: function(a) {

            if (null == Number(a)) return !1;

            if (a = Math.max(0, Math.min(1, a)), c._masterVolume = a, !this.activePlugin || !this.activePlugin.setVolume || !this.activePlugin.setVolume(a))

                for (var b = this._instances, d = 0, f = b.length; f > d; d++) b[d].setMasterVolume(a)

        }

    });

    c._masterMute = !1;

    Object.defineProperty(c, "muted", {

        get: function() {

            return this._masterMute

        },

        set: function(a) {

            if (null == a) return !1;

            if (this._masterMute = a, !this.activePlugin || !this.activePlugin.setMute || !this.activePlugin.setMute(a))

                for (var b = this._instances, c = 0, d = b.length; d > c; c++) b[c].setMasterMute(a);

            return !0

        }

    });

    Object.defineProperty(c, "capabilities", {

        get: function() {

            return null == c.activePlugin ? null : c.activePlugin._capabilities

        },

        set: function() {

            return !1

        }

    });

    c._pluginsRegistered = !1;

    c._lastID = 0;

    c._instances = [];

    c._idHash = {};

    c._preloadHash = {};

    c._defaultPlayPropsHash = {};

    c.addEventListener = null;

    c.removeEventListener =

        null;

    c.removeAllEventListeners = null;

    c.dispatchEvent = null;

    c.hasEventListener = null;

    c._listeners = null;

    createjs.EventDispatcher.initialize(c);

    c.getPreloadHandlers = function() {

        return {

            callback: createjs.proxy(c.initLoad, c),

            types: ["sound"],

            extensions: c.SUPPORTED_EXTENSIONS

        }

    };

    c._handleLoadComplete = function(a) {

        var b = a.target.getItem().src;

        if (c._preloadHash[b])

            for (var d = 0, f = c._preloadHash[b].length; f > d; d++) {

                var h = c._preloadHash[b][d];

                if (c._preloadHash[b][d] = !0, c.hasEventListener("fileload")) a = new createjs.Event("fileload"),

                    a.src = h.src, a.id = h.id, a.data = h.data, a.sprite = h.sprite, c.dispatchEvent(a)

            }

    };

    c._handleLoadError = function(a) {

        var b = a.target.getItem().src;

        if (c._preloadHash[b])

            for (var d = 0, f = c._preloadHash[b].length; f > d; d++) {

                var h = c._preloadHash[b][d];

                if (c._preloadHash[b][d] = !1, c.hasEventListener("fileerror")) a = new createjs.Event("fileerror"), a.src = h.src, a.id = h.id, a.data = h.data, a.sprite = h.sprite, c.dispatchEvent(a)

            }

    };

    c._registerPlugin = function(a) {

        return a.isSupported() ? (c.activePlugin = new a, !0) : !1

    };

    c.registerPlugins = function(a) {

        c._pluginsRegistered = !0;

        for (var b = 0, d = a.length; d > b; b++)

            if (c._registerPlugin(a[b])) return !0;

        return !1

    };

    c.initializeDefaultPlugins = function() {

        return null != c.activePlugin ? !0 : c._pluginsRegistered ? !1 : c.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin]) ? !0 : !1

    };

    c.isReady = function() {

        return null != c.activePlugin

    };

    c.getCapabilities = function() {

        return null == c.activePlugin ? null : c.activePlugin._capabilities

    };

    c.getCapability = function(a) {

        return null == c.activePlugin ? null : c.activePlugin._capabilities[a]

    };

    c.initLoad = function(a) {

        return c._registerSound(a)

    };

    c._registerSound = function(a) {

        if (!c.initializeDefaultPlugins()) return !1;

        var d;

        if (a.src instanceof Object ? (d = c._parseSrc(a.src), d.src = a.path + d.src) : d = c._parsePath(a.src), null == d) return !1;

        a.src = d.src;

        a.type = "sound";

        d = a.data;

        var g = null;

        if (null != d && (isNaN(d.channels) ? isNaN(d) || (g = parseInt(d)) : g = parseInt(d.channels), d.audioSprite))

            for (var f, h = d.audioSprite.length; h--;) f = d.audioSprite[h], c._idHash[f.id] = {

                src: a.src,

                startTime: parseInt(f.startTime),

                duration: parseInt(f.duration)

            }, f.defaultPlayProps && (c._defaultPlayPropsHash[f.id] =

                createjs.PlayPropsConfig.create(f.defaultPlayProps));

        null != a.id && (c._idHash[a.id] = {

            src: a.src

        });

        f = c.activePlugin.register(a);

        return b.create(a.src, g), null != d && isNaN(d) ? a.data.channels = g || b.maxPerChannel() : a.data = g || b.maxPerChannel(), f.type && (a.type = f.type), a.defaultPlayProps && (c._defaultPlayPropsHash[a.src] = createjs.PlayPropsConfig.create(a.defaultPlayProps)), f

    };

    c.registerSound = function(a, b, g, f, h) {

        g = {

            src: a,

            id: b,

            data: g,

            defaultPlayProps: h

        };

        a instanceof Object && a.src && (f = b, g = a);

        g = createjs.LoadItem.create(g);

        g.path = f;

        null == f || g.src instanceof Object || (g.src = f + a);

        a = c._registerSound(g);

        if (!a) return !1;

        if (c._preloadHash[g.src] || (c._preloadHash[g.src] = []), c._preloadHash[g.src].push(g), 1 == c._preloadHash[g.src].length) a.on("complete", createjs.proxy(this._handleLoadComplete, this)), a.on("error", createjs.proxy(this._handleLoadError, this)), c.activePlugin.preload(a);

        else if (1 == c._preloadHash[g.src][0]) return !0;

        return g

    };

    c.registerSounds = function(a, b) {

        var c = [];

        a.path && (b ? b += a.path : b = a.path, a = a.manifest);

        for (var d =

            0, e = a.length; e > d; d++) c[d] = createjs.Sound.registerSound(a[d].src, a[d].id, a[d].data, b, a[d].defaultPlayProps);

        return c

    };

    c.removeSound = function(a, e) {

        if (null == c.activePlugin) return !1;

        a instanceof Object && a.src && (a = a.src);

        var d;

        if (a instanceof Object ? d = c._parseSrc(a) : (a = c._getSrcById(a).src, d = c._parsePath(a)), null == d) return !1;

        a = d.src;

        null != e && (a = e + a);

        for (var f in c._idHash) c._idHash[f].src == a && delete c._idHash[f];

        return b.removeSrc(a), delete c._preloadHash[a], c.activePlugin.removeSound(a), !0

    };

    c.removeSounds =

        function(a, b) {

            var c = [];

            a.path && (b ? b += a.path : b = a.path, a = a.manifest);

            for (var d = 0, e = a.length; e > d; d++) c[d] = createjs.Sound.removeSound(a[d].src, b);

            return c

        };

    c.removeAllSounds = function() {

        c._idHash = {};

        c._preloadHash = {};

        b.removeAll();

        c.activePlugin && c.activePlugin.removeAllSounds()

    };

    c.loadComplete = function(a) {

        if (!c.isReady()) return !1;

        var b = c._parsePath(a);

        return a = b ? c._getSrcById(b.src).src : c._getSrcById(a).src, void 0 == c._preloadHash[a] ? !1 : 1 == c._preloadHash[a][0]

    };

    c._parsePath = function(a) {

        "string" != typeof a &&

            (a = a.toString());

        var b = a.match(c.FILE_PATTERN);

        if (null == b) return !1;

        for (var d = b[4], f = b[5], h = c.capabilities, n = 0; !h[f];)

            if (f = c.alternateExtensions[n++], n > c.alternateExtensions.length) return null;

        a = a.replace("." + b[5], "." + f);

        return {

            name: d,

            src: a,

            extension: f

        }

    };

    c._parseSrc = function(a) {

        var b = {

                name: void 0,

                src: void 0,

                extension: void 0

            },

            d = c.capabilities,

            f;

        for (f in a)

            if (a.hasOwnProperty(f) && d[f]) {

                b.src = a[f];

                b.extension = f;

                break

            }

        if (!b.src) return !1;

        a = b.src.lastIndexOf("/");

        return b.name = -1 != a ? b.src.slice(a + 1) : b.src,

            b

    };

    c.play = function(a, b, g, f, h, n, m, k, l) {

        b = createjs.PlayPropsConfig.create(b instanceof Object || b instanceof createjs.PlayPropsConfig ? b : {

            interrupt: b,

            delay: g,

            offset: f,

            loop: h,

            volume: n,

            pan: m,

            startTime: k,

            duration: l

        });

        a = c.createInstance(a, b.startTime, b.duration);

        return c._playInstance(a, b) || a._playFailed(), a

    };

    c.createInstance = function(a, e, g) {

        if (!c.initializeDefaultPlugins()) return new createjs.DefaultSoundInstance(a, e, g);

        var d = c._defaultPlayPropsHash[a];

        a = c._getSrcById(a);

        var h = c._parsePath(a.src),

            n = null;

        return null != h && null != h.src ? (b.create(h.src), null == e && (e = a.startTime), n = c.activePlugin.create(h.src, e, g || a.duration), d = d || c._defaultPlayPropsHash[h.src], d && n.applyPlayProps(d)) : n = new createjs.DefaultSoundInstance(a, e, g), n.uniqueId = c._lastID++, n

    };

    c.stop = function() {

        for (var a = this._instances, b = a.length; b--;) a[b].stop()

    };

    c.setVolume = function(a) {

        if (null == Number(a)) return !1;

        if (a = Math.max(0, Math.min(1, a)), c._masterVolume = a, !this.activePlugin || !this.activePlugin.setVolume || !this.activePlugin.setVolume(a))

            for (var b =

                this._instances, d = 0, f = b.length; f > d; d++) b[d].setMasterVolume(a)

    };

    c.getVolume = function() {

        return this._masterVolume

    };

    c.setMute = function(a) {

        if (null == a) return !1;

        if (this._masterMute = a, !this.activePlugin || !this.activePlugin.setMute || !this.activePlugin.setMute(a))

            for (var b = this._instances, c = 0, d = b.length; d > c; c++) b[c].setMasterMute(a);

        return !0

    };

    c.getMute = function() {

        return this._masterMute

    };

    c.setDefaultPlayProps = function(a, b) {

        a = c._getSrcById(a);

        c._defaultPlayPropsHash[c._parsePath(a.src).src] = createjs.PlayPropsConfig.create(b)

    };

    c.getDefaultPlayProps = function(a) {

        return a = c._getSrcById(a), c._defaultPlayPropsHash[c._parsePath(a.src).src]

    };

    c._playInstance = function(a, b) {

        var d = c._defaultPlayPropsHash[a.src] || {};

        if (null == b.interrupt && (b.interrupt = d.interrupt || c.defaultInterruptBehavior), null == b.delay && (b.delay = d.delay || 0), null == b.offset && (b.offset = a.getPosition()), null == b.loop && (b.loop = a.loop), null == b.volume && (b.volume = a.volume), null == b.pan && (b.pan = a.pan), 0 == b.delay) {

            if (!c._beginPlaying(a, b)) return !1

        } else d = setTimeout(function() {

            c._beginPlaying(a,

                b)

        }, b.delay), a.delayTimeoutId = d;

        return this._instances.push(a), !0

    };

    c._beginPlaying = function(a, c) {

        if (!b.add(a, c.interrupt)) return !1;

        if (!a._beginPlaying(c)) {

            var d = createjs.indexOf(this._instances, a);

            return -1 < d && this._instances.splice(d, 1), !1

        }

        return !0

    };

    c._getSrcById = function(a) {

        return c._idHash[a] || {

            src: a

        }

    };

    c._playFinished = function(a) {

        b.remove(a);

        a = createjs.indexOf(this._instances, a); - 1 < a && this._instances.splice(a, 1)

    };

    createjs.Sound = c;

    b.channels = {};

    b.create = function(a, c) {

        return null == b.get(a) ? (b.channels[a] =

            new b(a, c), !0) : !1

    };

    b.removeSrc = function(a) {

        var c = b.get(a);

        return null == c ? !1 : (c._removeAll(), delete b.channels[a], !0)

    };

    b.removeAll = function() {

        for (var a in b.channels) b.channels[a]._removeAll();

        b.channels = {}

    };

    b.add = function(a, c) {

        var d = b.get(a.src);

        return null == d ? !1 : d._add(a, c)

    };

    b.remove = function(a) {

        var c = b.get(a.src);

        return null == c ? !1 : (c._remove(a), !0)

    };

    b.maxPerChannel = function() {

        return a.maxDefault

    };

    b.get = function(a) {

        return b.channels[a]

    };

    var a = b.prototype;

    a.constructor = b;

    a.src = null;

    a.max = null;

    a.maxDefault =

        100;

    a.length = 0;

    a.init = function(a, b) {

        this.src = a;

        this.max = b || this.maxDefault; - 1 == this.max && (this.max = this.maxDefault);

        this._instances = []

    };

    a._get = function(a) {

        return this._instances[a]

    };

    a._add = function(a, b) {

        return this._getSlot(b, a) ? (this._instances.push(a), this.length++, !0) : !1

    };

    a._remove = function(a) {

        a = createjs.indexOf(this._instances, a);

        return -1 == a ? !1 : (this._instances.splice(a, 1), this.length--, !0)

    };

    a._removeAll = function() {

        for (var a = this.length - 1; 0 <= a; a--) this._instances[a].stop()

    };

    a._getSlot = function(a) {

        var b,

            d;

        if (a != c.INTERRUPT_NONE && (d = this._get(0), null == d)) return !0;

        for (var f = 0, h = this.max; h > f; f++) {

            if (b = this._get(f), null == b) return !0;

            if (b.playState == c.PLAY_FINISHED || b.playState == c.PLAY_INTERRUPTED || b.playState == c.PLAY_FAILED) {

                d = b;

                break

            }

            a != c.INTERRUPT_NONE && (a == c.INTERRUPT_EARLY && b.getPosition() < d.getPosition() || a == c.INTERRUPT_LATE && b.getPosition() > d.getPosition()) && (d = b)

        }

        return null != d ? (d._interrupt(), this._remove(d), !0) : !1

    };

    a.toString = function() {

        return "[Sound SoundChannel]"

    }

})();

this.createjs = this.createjs || {};

(function() {

    var c = function(a, b, c, g) {

            this.EventDispatcher_constructor();

            this.src = a;

            this.uniqueId = -1;

            this.delayTimeoutId = this.playState = null;

            this._volume = 1;

            Object.defineProperty(this, "volume", {

                get: this.getVolume,

                set: this.setVolume

            });

            this._pan = 0;

            Object.defineProperty(this, "pan", {

                get: this.getPan,

                set: this.setPan

            });

            this._startTime = Math.max(0, b || 0);

            Object.defineProperty(this, "startTime", {

                get: this.getStartTime,

                set: this.setStartTime

            });

            this._duration = Math.max(0, c || 0);

            Object.defineProperty(this, "duration", {

                get: this.getDuration,

                set: this.setDuration

            });

            this._playbackResource = null;

            Object.defineProperty(this, "playbackResource", {

                get: this.getPlaybackResource,

                set: this.setPlaybackResource

            });

            !1 !== g && !0 !== g && this.setPlaybackResource(g);

            this._position = 0;

            Object.defineProperty(this, "position", {

                get: this.getPosition,

                set: this.setPosition

            });

            this._loop = 0;

            Object.defineProperty(this, "loop", {

                get: this.getLoop,

                set: this.setLoop

            });

            this._muted = !1;

            Object.defineProperty(this, "muted", {

                get: this.getMuted,

                set: this.setMuted

            });

            this._paused = !1;

            Object.defineProperty(this,

                "paused", {

                    get: this.getPaused,

                    set: this.setPaused

                })

        },

        b = createjs.extend(c, createjs.EventDispatcher);

    b.play = function(a, b, c, g, f, h) {

        var d;

        return d = createjs.PlayPropsConfig.create(a instanceof Object || a instanceof createjs.PlayPropsConfig ? a : {

            interrupt: a,

            delay: b,

            offset: c,

            loop: g,

            volume: f,

            pan: h

        }), this.playState == createjs.Sound.PLAY_SUCCEEDED ? (this.applyPlayProps(d), void(this._paused && this.setPaused(!1))) : (this._cleanUp(), createjs.Sound._playInstance(this, d), this)

    };

    b.stop = function() {

        return this._position = 0,

            this._paused = !1, this._handleStop(), this._cleanUp(), this.playState = createjs.Sound.PLAY_FINISHED, this

    };

    b.destroy = function() {

        this._cleanUp();

        this.playbackResource = this.src = null;

        this.removeAllEventListeners()

    };

    b.applyPlayProps = function(a) {

        return null != a.offset && this.setPosition(a.offset), null != a.loop && this.setLoop(a.loop), null != a.volume && this.setVolume(a.volume), null != a.pan && this.setPan(a.pan), null != a.startTime && (this.setStartTime(a.startTime), this.setDuration(a.duration)), this

    };

    b.toString = function() {

        return "[AbstractSoundInstance]"

    };

    b.getPaused = function() {

        return this._paused

    };

    b.setPaused = function(a) {

        return !0 !== a && !1 !== a || this._paused == a || 1 == a && this.playState != createjs.Sound.PLAY_SUCCEEDED ? void 0 : (this._paused = a, a ? this._pause() : this._resume(), clearTimeout(this.delayTimeoutId), this)

    };

    b.setVolume = function(a) {

        return a == this._volume ? this : (this._volume = Math.max(0, Math.min(1, a)), this._muted || this._updateVolume(), this)

    };

    b.getVolume = function() {

        return this._volume

    };

    b.setMuted = function(a) {

        return !0 === a || !1 === a ? (this._muted = a, this._updateVolume(),

            this) : void 0

    };

    b.getMuted = function() {

        return this._muted

    };

    b.setPan = function(a) {

        return a == this._pan ? this : (this._pan = Math.max(-1, Math.min(1, a)), this._updatePan(), this)

    };

    b.getPan = function() {

        return this._pan

    };

    b.getPosition = function() {

        return this._paused || this.playState != createjs.Sound.PLAY_SUCCEEDED || (this._position = this._calculateCurrentPosition()), this._position

    };

    b.setPosition = function(a) {

        return this._position = Math.max(0, a), this.playState == createjs.Sound.PLAY_SUCCEEDED && this._updatePosition(), this

    };

    b.getStartTime =

        function() {

            return this._startTime

        };

    b.setStartTime = function(a) {

        return a == this._startTime ? this : (this._startTime = Math.max(0, a || 0), this._updateStartTime(), this)

    };

    b.getDuration = function() {

        return this._duration

    };

    b.setDuration = function(a) {

        return a == this._duration ? this : (this._duration = Math.max(0, a || 0), this._updateDuration(), this)

    };

    b.setPlaybackResource = function(a) {

        return this._playbackResource = a, 0 == this._duration && this._setDurationFromSource(), this

    };

    b.getPlaybackResource = function() {

        return this._playbackResource

    };

    b.getLoop = function() {

        return this._loop

    };

    b.setLoop = function(a) {

        null != this._playbackResource && (0 != this._loop && 0 == a ? this._removeLooping(a) : 0 == this._loop && 0 != a && this._addLooping(a));

        this._loop = a

    };

    b._sendEvent = function(a) {

        a = new createjs.Event(a);

        this.dispatchEvent(a)

    };

    b._cleanUp = function() {

        clearTimeout(this.delayTimeoutId);

        this._handleCleanUp();

        this._paused = !1;

        createjs.Sound._playFinished(this)

    };

    b._interrupt = function() {

        this._cleanUp();

        this.playState = createjs.Sound.PLAY_INTERRUPTED;

        this._sendEvent("interrupted")

    };

    b._beginPlaying = function(a) {

        return this.setPosition(a.offset), this.setLoop(a.loop), this.setVolume(a.volume), this.setPan(a.pan), null != a.startTime && (this.setStartTime(a.startTime), this.setDuration(a.duration)), null != this._playbackResource && this._position < this._duration ? (this._paused = !1, this._handleSoundReady(), this.playState = createjs.Sound.PLAY_SUCCEEDED, this._sendEvent("succeeded"), !0) : (this._playFailed(), !1)

    };

    b._playFailed = function() {

        this._cleanUp();

        this.playState = createjs.Sound.PLAY_FAILED;

        this._sendEvent("failed")

    };

    b._handleSoundComplete = function() {

        return this._position = 0, 0 != this._loop ? (this._loop--, this._handleLoop(), void this._sendEvent("loop")) : (this._cleanUp(), this.playState = createjs.Sound.PLAY_FINISHED, void this._sendEvent("complete"))

    };

    b._handleSoundReady = function() {};

    b._updateVolume = function() {};

    b._updatePan = function() {};

    b._updateStartTime = function() {};

    b._updateDuration = function() {};

    b._setDurationFromSource = function() {};

    b._calculateCurrentPosition = function() {};

    b._updatePosition = function() {};

    b._removeLooping =

        function() {};

    b._addLooping = function() {};

    b._pause = function() {};

    b._resume = function() {};

    b._handleStop = function() {};

    b._handleCleanUp = function() {};

    b._handleLoop = function() {};

    createjs.AbstractSoundInstance = createjs.promote(c, "EventDispatcher");

    createjs.DefaultSoundInstance = createjs.AbstractSoundInstance

})();

this.createjs = this.createjs || {};

(function() {

    var c = function() {

            this._capabilities = null;

            this._loaders = {};

            this._audioSources = {};

            this._soundInstances = {};

            this._volume = 1;

            this._loaderClass;

            this._soundInstanceClass

        },

        b = c.prototype;

    c._capabilities = null;

    c.isSupported = function() {

        return !0

    };

    b.register = function(a) {

        var b = this._loaders[a.src];

        return b && !b.canceled ? this._loaders[a.src] : (this._audioSources[a.src] = !0, this._soundInstances[a.src] = [], b = new this._loaderClass(a), b.on("complete", this._handlePreloadComplete, this), this._loaders[a.src] = b, b)

    };

    b.preload = function(a) {

        a.on("error", this._handlePreloadError, this);

        a.load()

    };

    b.isPreloadStarted = function(a) {

        return null != this._audioSources[a]

    };

    b.isPreloadComplete = function(a) {

        return !(null == this._audioSources[a] || 1 == this._audioSources[a])

    };

    b.removeSound = function(a) {

        if (this._soundInstances[a]) {

            for (var b = this._soundInstances[a].length; b--;) this._soundInstances[a][b].destroy();

            delete this._soundInstances[a];

            delete this._audioSources[a];

            this._loaders[a] && this._loaders[a].destroy();

            delete this._loaders[a]

        }

    };

    b.removeAllSounds = function() {

        for (var a in this._audioSources) this.removeSound(a)

    };

    b.create = function(a, b, c) {

        this.isPreloadStarted(a) || this.preload(this.register(a));

        b = new this._soundInstanceClass(a, b, c, this._audioSources[a]);

        return this._soundInstances[a].push(b), b

    };

    b.setVolume = function(a) {

        return this._volume = a, this._updateVolume(), !0

    };

    b.getVolume = function() {

        return this._volume

    };

    b.setMute = function() {

        return this._updateVolume(), !0

    };

    b.toString = function() {

        return "[AbstractPlugin]"

    };

    b._handlePreloadComplete =

        function(a) {

            var b = a.target.getItem().src;

            this._audioSources[b] = a.result;

            a = 0;

            for (var c = this._soundInstances[b].length; c > a; a++) this._soundInstances[b][a].setPlaybackResource(this._audioSources[b])

        };

    b._handlePreloadError = function() {};

    b._updateVolume = function() {};

    createjs.AbstractPlugin = c

})();

this.createjs = this.createjs || {};

(function() {

    function c(a) {

        this.AbstractLoader_constructor(a, !0, createjs.AbstractLoader.SOUND)

    }

    var b = createjs.extend(c, createjs.AbstractLoader);

    c.context = null;

    b.toString = function() {

        return "[WebAudioLoader]"

    };

    b._createRequest = function() {

        this._request = new createjs.XHRRequest(this._item, !1);

        this._request.setResponseType("arraybuffer")

    };

    b._sendComplete = function() {

        c.context.decodeAudioData(this._rawResult, createjs.proxy(this._handleAudioDecoded, this), createjs.proxy(this._sendError, this))

    };

    b._handleAudioDecoded =

        function(a) {

            this._result = a;

            this.AbstractLoader__sendComplete()

        };

    createjs.WebAudioLoader = createjs.promote(c, "AbstractLoader")

})();

this.createjs = this.createjs || {};

(function() {

    function c(b, c, g, f) {

        this.AbstractSoundInstance_constructor(b, c, g, f);

        this.gainNode = a.context.createGain();

        this.panNode = a.context.createPanner();

        this.panNode.panningModel = a._panningModel;

        this.panNode.connect(this.gainNode);

        this._updatePan();

        this._sourceNodeNext = this._soundCompleteTimeout = this.sourceNode = null;

        this._playbackStartTime = 0;

        this._endedHandler = createjs.proxy(this._handleSoundComplete, this)

    }

    var b = createjs.extend(c, createjs.AbstractSoundInstance),

        a = c;

    a.context = null;

    a._scratchBuffer =

        null;

    a.destinationNode = null;

    a._panningModel = "equalpower";

    b.destroy = function() {

        this.AbstractSoundInstance_destroy();

        this.panNode.disconnect(0);

        this.panNode = null;

        this.gainNode.disconnect(0);

        this.gainNode = null

    };

    b.toString = function() {

        return "[WebAudioSoundInstance]"

    };

    b._updatePan = function() {

        this.panNode.setPosition(this._pan, 0, -.5)

    };

    b._removeLooping = function() {

        this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext)

    };

    b._addLooping = function() {

        this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._sourceNodeNext =

            this._createAndPlayAudioNode(this._playbackStartTime, 0))

    };

    b._setDurationFromSource = function() {

        this._duration = 1E3 * this.playbackResource.duration

    };

    b._handleCleanUp = function() {

        this.sourceNode && this.playState == createjs.Sound.PLAY_SUCCEEDED && (this.sourceNode = this._cleanUpAudioNode(this.sourceNode), this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext));

        0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0);

        clearTimeout(this._soundCompleteTimeout);

        this._playbackStartTime = 0

    };

    b._cleanUpAudioNode =

        function(b) {

            if (b) {

                b.stop(0);

                b.disconnect(0);

                try {

                    b.buffer = a._scratchBuffer

                } catch (e) {}

                b = null

            }

            return b

        };

    b._handleSoundReady = function() {

        this.gainNode.connect(a.destinationNode);

        var b = .001 * this._duration,

            c = .001 * this._position;

        c > b && (c = b);

        this.sourceNode = this._createAndPlayAudioNode(a.context.currentTime - b, c);

        this._playbackStartTime = this.sourceNode.startTime - c;

        this._soundCompleteTimeout = setTimeout(this._endedHandler, 1E3 * (b - c));

        0 != this._loop && (this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime,

            0))

    };

    b._createAndPlayAudioNode = function(b, c) {

        var d = a.context.createBufferSource();

        d.buffer = this.playbackResource;

        d.connect(this.panNode);

        var e = .001 * this._duration;

        return d.startTime = b + e, d.start(d.startTime, c + .001 * this._startTime, e - c), d

    };

    b._pause = function() {

        this._position = 1E3 * (a.context.currentTime - this._playbackStartTime);

        this.sourceNode = this._cleanUpAudioNode(this.sourceNode);

        this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext);

        0 != this.gainNode.numberOfOutputs && this.gainNode.disconnect(0);

        clearTimeout(this._soundCompleteTimeout)

    };

    b._resume = function() {

        this._handleSoundReady()

    };

    b._updateVolume = function() {

        var a = this._muted ? 0 : this._volume;

        a != this.gainNode.gain.value && (this.gainNode.gain.value = a)

    };

    b._calculateCurrentPosition = function() {

        return 1E3 * (a.context.currentTime - this._playbackStartTime)

    };

    b._updatePosition = function() {

        this.sourceNode = this._cleanUpAudioNode(this.sourceNode);

        this._sourceNodeNext = this._cleanUpAudioNode(this._sourceNodeNext);

        clearTimeout(this._soundCompleteTimeout);

        this._paused ||

            this._handleSoundReady()

    };

    b._handleLoop = function() {

        this._cleanUpAudioNode(this.sourceNode);

        this.sourceNode = this._sourceNodeNext;

        this._playbackStartTime = this.sourceNode.startTime;

        this._sourceNodeNext = this._createAndPlayAudioNode(this._playbackStartTime, 0);

        this._soundCompleteTimeout = setTimeout(this._endedHandler, this._duration)

    };

    b._updateDuration = function() {

        this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._pause(), this._resume())

    };

    createjs.WebAudioSoundInstance = createjs.promote(c, "AbstractSoundInstance")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this.AbstractPlugin_constructor();

        this._panningModel = a._panningModel;

        this.context = a.context;

        this.dynamicsCompressorNode = this.context.createDynamicsCompressor();

        this.dynamicsCompressorNode.connect(this.context.destination);

        this.gainNode = this.context.createGain();

        this.gainNode.connect(this.dynamicsCompressorNode);

        createjs.WebAudioSoundInstance.destinationNode = this.gainNode;

        this._capabilities = a._capabilities;

        this._loaderClass = createjs.WebAudioLoader;

        this._soundInstanceClass =

            createjs.WebAudioSoundInstance;

        this._addPropsToClasses()

    }

    var b = createjs.extend(c, createjs.AbstractPlugin),

        a = c;

    a._capabilities = null;

    a._panningModel = "equalpower";

    a.context = null;

    a._scratchBuffer = null;

    a._unlocked = !1;

    a.isSupported = function() {

        var b = createjs.BrowserDetect.isIOS || createjs.BrowserDetect.isAndroid || createjs.BrowserDetect.isBlackberry;

        return "file:" != location.protocol || b || this._isFileXHRSupported() ? (a._generateCapabilities(), null == a.context ? !1 : !0) : !1

    };

    a.playEmptySound = function() {

        if (null != a.context) {

            var b =

                a.context.createBufferSource();

            b.buffer = a._scratchBuffer;

            b.connect(a.context.destination);

            b.start(0, 0, 0)

        }

    };

    a._isFileXHRSupported = function() {

        var a = !0,

            b = new XMLHttpRequest;

        try {

            b.open("GET", "WebAudioPluginTest.fail", !1)

        } catch (g) {

            return a = !1

        }

        b.onerror = function() {

            a = !1

        };

        b.onload = function() {

            a = 404 == this.status || 200 == this.status || 0 == this.status && "" != this.response

        };

        try {

            b.send()

        } catch (g) {

            a = !1

        }

        return a

    };

    a._generateCapabilities = function() {

        if (null == a._capabilities) {

            var b = document.createElement("audio");

            if (null ==

                b.canPlayType) return null;

            if (null == a.context)

                if (window.AudioContext) a.context = new AudioContext;

                else {

                    if (!window.webkitAudioContext) return null;

                    a.context = new webkitAudioContext

                }

            null == a._scratchBuffer && (a._scratchBuffer = a.context.createBuffer(1, 1, 22050));

            a._compatibilitySetUp();

            "ontouchstart" in window && "running" != a.context.state && (a._unlock(), document.addEventListener("mousedown", a._unlock, !0), document.addEventListener("touchend", a._unlock, !0));

            a._capabilities = {

                panning: !0,

                volume: !0,

                tracks: -1

            };

            for (var c =

                createjs.Sound.SUPPORTED_EXTENSIONS, g = createjs.Sound.EXTENSION_MAP, f = 0, h = c.length; h > f; f++) {

                var n = c[f],

                    m = g[n] || n;

                a._capabilities[n] = "no" != b.canPlayType("audio/" + n) && "" != b.canPlayType("audio/" + n) || "no" != b.canPlayType("audio/" + m) && "" != b.canPlayType("audio/" + m)

            }

            2 > a.context.destination.numberOfChannels && (a._capabilities.panning = !1)

        }

    };

    a._compatibilitySetUp = function() {

        if (a._panningModel = "equalpower", !a.context.createGain) {

            a.context.createGain = a.context.createGainNode;

            var b = a.context.createBufferSource();

            b.__proto__.start = b.__proto__.noteGrainOn;

            b.__proto__.stop = b.__proto__.noteOff;

            a._panningModel = 0

        }

    };

    a._unlock = function() {

        a._unlocked || (a.playEmptySound(), "running" == a.context.state && (document.removeEventListener("mousedown", a._unlock, !0), document.removeEventListener("touchend", a._unlock, !0), a._unlocked = !0))

    };

    b.toString = function() {

        return "[WebAudioPlugin]"

    };

    b._addPropsToClasses = function() {

        var b = this._soundInstanceClass;

        b.context = this.context;

        b._scratchBuffer = a._scratchBuffer;

        b.destinationNode = this.gainNode;

        b._panningModel = this._panningModel;

        this._loaderClass.context = this.context

    };

    b._updateVolume = function() {

        var a = createjs.Sound._masterMute ? 0 : this._volume;

        a != this.gainNode.gain.value && (this.gainNode.gain.value = a)

    };

    createjs.WebAudioPlugin = createjs.promote(c, "AbstractPlugin")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        throw "HTMLAudioTagPool cannot be instantiated";

    }



    function b() {

        this._tags = []

    }

    c._tags = {};

    c._tagPool = new b;

    c._tagUsed = {};

    c.get = function(a) {

        var b = c._tags[a];

        return null == b ? (b = c._tags[a] = c._tagPool.get(), b.src = a) : c._tagUsed[a] ? (b = c._tagPool.get(), b.src = a) : c._tagUsed[a] = !0, b

    };

    c.set = function(a, b) {

        b == c._tags[a] ? c._tagUsed[a] = !1 : c._tagPool.set(b)

    };

    c.remove = function(a) {

        var b = c._tags[a];

        return null == b ? !1 : (c._tagPool.set(b), delete c._tags[a], delete c._tagUsed[a], !0)

    };

    c.getDuration = function(a) {

        a =

            c._tags[a];

        return null != a && a.duration ? 1E3 * a.duration : 0

    };

    createjs.HTMLAudioTagPool = c;

    var a = b.prototype;

    a.constructor = b;

    a.get = function() {

        var a;

        return a = 0 == this._tags.length ? this._createTag() : this._tags.pop(), null == a.parentNode && document.body.appendChild(a), a

    };

    a.set = function(a) {

        -1 == createjs.indexOf(this._tags, a) && (this._tags.src = null, this._tags.push(a))

    };

    a.toString = function() {

        return "[TagPool]"

    };

    a._createTag = function() {

        var a = document.createElement("audio");

        return a.autoplay = !1, a.preload = "none", a

    }

})();

this.createjs = this.createjs || {};

(function() {

    function c(a, b, c, g) {

        this.AbstractSoundInstance_constructor(a, b, c, g);

        this._delayTimeoutId = this._audioSpriteStopTime = null;

        this._endedHandler = createjs.proxy(this._handleSoundComplete, this);

        this._readyHandler = createjs.proxy(this._handleTagReady, this);

        this._stalledHandler = createjs.proxy(this._playFailed, this);

        this._audioSpriteEndHandler = createjs.proxy(this._handleAudioSpriteLoop, this);

        this._loopHandler = createjs.proxy(this._handleSoundComplete, this);

        c ? this._audioSpriteStopTime = .001 * (b + c) : this._duration =

            createjs.HTMLAudioTagPool.getDuration(this.src)

    }

    var b = createjs.extend(c, createjs.AbstractSoundInstance);

    b.setMasterVolume = function() {

        this._updateVolume()

    };

    b.setMasterMute = function() {

        this._updateVolume()

    };

    b.toString = function() {

        return "[HTMLAudioSoundInstance]"

    };

    b._removeLooping = function() {

        null != this._playbackResource && (this._playbackResource.loop = !1, this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))

    };

    b._addLooping = function() {

        null == this._playbackResource ||

            this._audioSpriteStopTime || (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), this._playbackResource.loop = !0)

    };

    b._handleCleanUp = function() {

        var a = this._playbackResource;

        if (null != a) {

            a.pause();

            a.loop = !1;

            a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1);

            a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1);

            a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1);

            a.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1);

            a.removeEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1);

            try {

                a.currentTime = this._startTime

            } catch (d) {}

            createjs.HTMLAudioTagPool.set(this.src, a);

            this._playbackResource = null

        }

    };

    b._beginPlaying = function(a) {

        return this._playbackResource = createjs.HTMLAudioTagPool.get(this.src), this.AbstractSoundInstance__beginPlaying(a)

    };

    b._handleSoundReady = function() {

        if (4 !== this._playbackResource.readyState) {

            var a =

                this._playbackResource;

            return a.addEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1), a.addEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1), a.preload = "auto", void a.load()

        }

        this._updateVolume();

        this._playbackResource.currentTime = .001 * (this._startTime + this._position);

        this._audioSpriteStopTime ? this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1) : (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED,

            this._endedHandler, !1), 0 != this._loop && (this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1), this._playbackResource.loop = !0));

        this._playbackResource.play()

    };

    b._handleTagReady = function() {

        this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_READY, this._readyHandler, !1);

        this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_STALLED, this._stalledHandler, !1);

        this._handleSoundReady()

    };

    b._pause = function() {

        this._playbackResource.pause()

    };

    b._resume = function() {

        this._playbackResource.play()

    };

    b._updateVolume = function() {

        if (null != this._playbackResource) {

            var a = this._muted || createjs.Sound._masterMute ? 0 : this._volume * createjs.Sound._masterVolume;

            a != this._playbackResource.volume && (this._playbackResource.volume = a)

        }

    };

    b._calculateCurrentPosition = function() {

        return 1E3 * this._playbackResource.currentTime - this._startTime

    };

    b._updatePosition = function() {

        this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1);

        this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1);

        try {

            this._playbackResource.currentTime = .001 * (this._position + this._startTime)

        } catch (a) {

            this._handleSetPositionSeek(null)

        }

    };

    b._handleSetPositionSeek = function() {

        null != this._playbackResource && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._handleSetPositionSeek, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))

    };

    b._handleAudioSpriteLoop = function() {

        this._playbackResource.currentTime <= this._audioSpriteStopTime || (this._playbackResource.pause(), 0 == this._loop ? this._handleSoundComplete(null) : (this._position = 0, this._loop--, this._playbackResource.currentTime = .001 * this._startTime, this._paused || this._playbackResource.play(), this._sendEvent("loop")))

    };

    b._handleLoop = function() {

        0 == this._loop && (this._playbackResource.loop = !1, this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_SEEKED, this._loopHandler, !1))

    };

    b._updateStartTime = function() {

        this._audioSpriteStopTime = .001 * (this._startTime + this._duration);

        this.playState == createjs.Sound.PLAY_SUCCEEDED && (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1))

    };

    b._updateDuration = function() {

        this._audioSpriteStopTime = .001 * (this._startTime + this._duration);

        this.playState == createjs.Sound.PLAY_SUCCEEDED &&

            (this._playbackResource.removeEventListener(createjs.HTMLAudioPlugin._AUDIO_ENDED, this._endedHandler, !1), this._playbackResource.addEventListener(createjs.HTMLAudioPlugin._TIME_UPDATE, this._audioSpriteEndHandler, !1))

    };

    b._setDurationFromSource = function() {

        this._duration = createjs.HTMLAudioTagPool.getDuration(this.src);

        this._playbackResource = null

    };

    createjs.HTMLAudioSoundInstance = createjs.promote(c, "AbstractSoundInstance")

})();

this.createjs = this.createjs || {};

(function() {

    function c() {

        this.AbstractPlugin_constructor();

        this.defaultNumChannels = 2;

        this._capabilities = a._capabilities;

        this._loaderClass = createjs.SoundLoader;

        this._soundInstanceClass = createjs.HTMLAudioSoundInstance

    }

    var b = createjs.extend(c, createjs.AbstractPlugin),

        a = c;

    a.MAX_INSTANCES = 30;

    a._AUDIO_READY = "canplaythrough";

    a._AUDIO_ENDED = "ended";

    a._AUDIO_SEEKED = "seeked";

    a._AUDIO_STALLED = "stalled";

    a._TIME_UPDATE = "timeupdate";

    a._capabilities = null;

    a.isSupported = function() {

        return a._generateCapabilities(),

            null != a._capabilities

    };

    a._generateCapabilities = function() {

        if (null == a._capabilities) {

            var b = document.createElement("audio");

            if (null == b.canPlayType) return null;

            a._capabilities = {

                panning: !1,

                volume: !0,

                tracks: -1

            };

            for (var c = createjs.Sound.SUPPORTED_EXTENSIONS, g = createjs.Sound.EXTENSION_MAP, f = 0, h = c.length; h > f; f++) {

                var n = c[f],

                    m = g[n] || n;

                a._capabilities[n] = "no" != b.canPlayType("audio/" + n) && "" != b.canPlayType("audio/" + n) || "no" != b.canPlayType("audio/" + m) && "" != b.canPlayType("audio/" + m)

            }

        }

    };

    b.register = function(a) {

        var b =

            createjs.HTMLAudioTagPool.get(a.src);

        a = this.AbstractPlugin_register(a);

        return a.setTag(b), a

    };

    b.removeSound = function(a) {

        this.AbstractPlugin_removeSound(a);

        createjs.HTMLAudioTagPool.remove(a)

    };

    b.create = function(a, b, c) {

        a = this.AbstractPlugin_create(a, b, c);

        return a.setPlaybackResource(null), a

    };

    b.toString = function() {

        return "[HTMLAudioPlugin]"

    };

    b.setVolume = b.getVolume = b.setMute = null;

    createjs.HTMLAudioPlugin = createjs.promote(c, "AbstractPlugin")

})();

this.createjs = this.createjs || {};

(function(c) {

    function b(a) {

        this.rawData = a && 16 === a.length ? new Float32Array(a) : new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])

    }



    function a(a, b) {

        var c = a.rawData,

            d = c[0],

            e = c[4],

            g = c[8],

            k = c[12],

            l = c[1],

            p = c[5],

            r = c[9],

            q = c[13],

            t = c[2],

            u = c[6],

            v = c[10],

            B = c[14],

            E = c[3],

            A = c[7],

            y = c[11],

            c = c[15],

            x = b.rawData,

            D = x[0],

            F = x[4],

            M = x[8],

            N = x[12],

            G = x[1],

            I = x[5],

            T = x[9],

            V = x[13],

            W = x[2],

            K = x[6],

            H = x[10],

            U = x[14],

            Q = x[3],

            da = x[7],

            ga = x[11],

            x = x[15],

            P = this.rawData;

        P[0] = d * D + e * G + g * W + k * Q;

        P[1] = l * D + p * G + r * W + q * Q;

        P[2] = t * D + u * G + v * W + B * Q;

        P[3] = E * D + A * G +

            y * W + c * Q;

        P[4] = d * F + e * I + g * K + k * da;

        P[5] = l * F + p * I + r * K + q * da;

        P[6] = t * F + u * I + v * K + B * da;

        P[7] = E * F + A * I + y * K + c * da;

        P[8] = d * M + e * T + g * H + k * ga;

        P[9] = l * M + p * T + r * H + q * ga;

        P[10] = t * M + u * T + v * H + B * ga;

        P[11] = E * M + A * T + y * H + c * ga;

        P[12] = d * N + e * V + g * U + k * x;

        P[13] = l * N + p * V + r * U + q * x;

        P[14] = t * N + u * V + v * U + B * x;

        P[15] = E * N + A * V + y * U + c * x

    }

    c = b.prototype = {

        get determinant() {

            var a = this.rawData,

                b = a[1],

                c = a[5],

                d = a[9],

                n = a[13],

                m = a[2],

                k = a[6],

                l = a[10],

                p = a[14],

                r = a[3],

                q = a[7],

                t = a[11],

                u = a[15],

                v = l * u - t * p,

                B = d * u - t * n,

                E = d * p - l * n,

                A = m * q - r * k,

                y = b * q - r * c,

                x = b * k - m * c;

            return a[0] * (c * v - k * B + q * E) -

                a[4] * (b * v - m * B + r * E) + a[8] * (n * A - p * y + u * x) - a[12] * (d * A - l * y + t * x)

        }, get position() {

            var a = this.rawData;

            return new createjs.Vector3D(a[12], a[13], a[14])

        }, set position(a) {

            var b = this.rawData;

            b[12] = a.x;

            b[13] = a.y;

            b[14] = a.z

        }

    };

    c.rawData = null;

    c.append = function(b) {

        a.call(this, b, this)

    };

    c.appendRotation = function(a, c, d) {

        var e, f, g;

        e = f = g = 0;

        d instanceof createjs.Vector3D && (e = d.x, f = d.y, g = d.z);

        d = a * b.DEG_TO_RAD;

        a = Math.cos(d);

        d = Math.sin(d);

        var k = c.x,

            l = c.y;

        c = c.z;

        var p = k * k,

            r = l * l,

            q = c * c,

            t = p + r + q;

        if (0 !== t) {

            var u = Math.sqrt(t),

                k = k / u,

                l = l / u;

            c /= u;

            p /= t;

            r /= t;

            q /= t

        }

        var t = 1 - a,

            u = new b,

            v = u.rawData;

        v[0] = p + (r + q) * a;

        v[1] = k * l * t + c * d;

        v[2] = k * c * t - l * d;

        v[4] = k * l * t - c * d;

        v[5] = r + (p + q) * a;

        v[6] = l * c * t + k * d;

        v[8] = k * c * t + l * d;

        v[9] = l * c * t - k * d;

        v[10] = q + (p + r) * a;

        v[12] = (e * (r + q) - k * (f * l + g * c)) * t + (f * c - g * l) * d;

        v[13] = (f * (p + q) - l * (e * k + g * c)) * t + (g * k - e * c) * d;

        v[14] = (g * (p + r) - c * (e * k + f * l)) * t + (e * l - f * k) * d;

        this.append(u)

    };

    c.appendScale = function(a, b, c) {

        var d = this.rawData;

        isNaN(a) || 1 === a || (d[0] *= a, d[4] *= a, d[8] *= a, d[12] *= a);

        isNaN(b) || 1 === b || (d[1] *= b, d[5] *= b, d[9] *= b, d[13] *= b);

        isNaN(c) || 1 ===

            c || (d[2] *= c, d[6] *= c, d[10] *= c, d[14] *= c)

    };

    c.appendTranslation = function(a, b, c) {

        a = a || 0;

        b = b || 0;

        c = c || 0;

        var d = this.rawData,

            e = d[3],

            f = d[7],

            g = d[11],

            l = d[15];

        0 !== a && (d[0] += a * e, d[4] += a * f, d[8] += a * g, d[12] += a * l);

        0 !== b && (d[1] += b * e, d[5] += b * f, d[9] += b * g, d[13] += b * l);

        0 !== c && (d[2] += c * e, d[6] += c * f, d[10] += c * g, d[14] += c * l)

    };

    c.clone = function() {

        return new b(this.rawData)

    };

    c.copyColumnFrom = function(a, b) {

        a |= 0;

        if (!(0 > a || 3 < a)) {

            var c = 4 * a,

                d = this.rawData;

            d[c] = b.x;

            d[++c] = b.y;

            d[++c] = b.z;

            d[++c] = b.w

        }

    };

    c.copyColumnTo = function(a, b) {

        a |= 0;

        if (!(0 >

            a || 3 < a)) {

            var c = 4 * a,

                d = this.rawData;

            b.x = d[c];

            b.y = d[++c];

            b.z = d[++c];

            b.w = d[++c]

        }

    };

    c.copyFrom = function(a) {

        var b = this.rawData;

        a = a.rawData;

        for (var c = 0; 16 > c; c++) b[c] = a[c]

    };

    c.copyRawDataFrom = function(a, b, c) {

        b |= 0;

        var d = a.length;

        if (0 > b || 16 > d - b) throw Error("Invalid parameter");

        for (var d = this.rawData, e = 0; 16 > e; e++) d[e] = a[b++];

        c && this.transpose()

    };

    c.copyRawDataTo = function(a, b, c) {

        b |= 0;

        if (0 > b) throw Error("Invalid parameter");

        c ? (c = this.clone(), c.transpose(), c = c.rawData) : c = this.rawData;

        for (var d = 0; 16 > d; d++) a[b++] = c[d]

    };

    c.copyRowFrom = function(a, b) {

        a |= 0;

        if (!(0 > a || 3 < a)) {

            var c = this.rawData;

            c[a] = b.x;

            c[a += 4] = b.y;

            c[a += 4] = b.z;

            c[a += 4] = b.w

        }

    };

    c.copyRowTo = function(a, b) {

        a |= 0;

        if (!(0 > a || 3 < a)) {

            var c = this.rawData;

            b.x = c[a];

            b.y = c[a += 4];

            b.z = c[a += 4];

            b.w = c[a + 4]

        }

    };

    c.copyToMatrix3D = function(a) {

        a = a.rawData;

        for (var b = this.rawData, c = 0; 16 > c; c++) a[c] = b[c]

    };

    c.decompose = function(a) {

        var b = d,

            c = b.EULER_ANGLES,

            e = b.QUATERNION,

            n = b.AXIS_ANGLE;

        a = a || c;

        if (a !== c && a !== e && a !== n) throw Error("The 1st parameter is invalid.");

        var b = this.rawData,

            e = new createjs.Vector3D(b[12],

                b[13], b[14]),

            m = b[0],

            k = b[4],

            l = b[8],

            p = b[1],

            r = b[5],

            q = b[9],

            t = b[2],

            u = b[6],

            v = b[10],

            B = Math.sqrt(m * m + p * p + t * t),

            E = Math.sqrt(k * k + r * r + u * u),

            A = Math.sqrt(l * l + q * q + v * v),

            b = new createjs.Vector3D(B, E, A);

        0 < B && (m /= B, p /= B, t /= B);

        0 < E && (k /= E, r /= E, u /= E);

        0 < A && (l /= A, q /= A, v /= A);

        var y;

        if (a === c) {

            var x, D;

            y = -t;

            y = -1 >= y ? .5 * -Math.PI : 1 <= y ? .5 * Math.PI : Math.asin(y);.001 >= Math.cos(y) ? (D = 0, x = Math.atan2(-q, r)) : (D = Math.atan2(p, m), x = Math.atan2(u, v));

            y = new createjs.Vector3D(x, y, D)

        } else {

            var c = [m + r + v, m - r - v, r - m - v, v - m - r],

                r = c.indexOf(Math.max.apply(null,

                    c)),

                c = .5 * Math.sqrt(c[r] + 1),

                m = .25 / c,

                F;

            switch (r) {

                case 0:

                    y = (u - q) * m;

                    D = (l - t) * m;

                    x = (p - k) * m;

                    F = c;

                    break;

                case 1:

                    y = c;

                    D = (p + k) * m;

                    x = (l + t) * m;

                    F = (u - q) * m;

                    break;

                case 2:

                    y = (p + k) * m;

                    D = c;

                    x = (u + q) * m;

                    F = (l - t) * m;

                    break;

                case 3:

                    y = (l + t) * m, D = (u + q) * m, x = c, F = (p - k) * m

            }

            q = Math.sqrt(y * y + D * D + x * x + F * F);

            0 !== q && (y /= q, D /= q, x /= q, F /= q);

            a === n && (a = Math.acos(F), q = Math.sin(a), 0 !== q ? (y /= q, D /= q, x /= q, F = 2 * a) : y = D = x = F = 0);

            y = new createjs.Vector3D(y, D, x, F)

        }

        return [e, y, b]

    };

    c.deltaTransformVector = function(a) {

        var b = a.x,

            c = a.y;

        a = a.z;

        var d = this.rawData;

        return new createjs.Vector3D(d[0] *

            b + d[4] * c + d[8] * a, d[1] * b + d[5] * c + d[9] * a, d[2] * b + d[6] * c + d[10] * a)

    };

    c.identity = function() {

        var a = this.rawData;

        a[0] = a[5] = a[10] = a[15] = 1;

        a[1] = a[2] = a[3] = a[4] = a[6] = a[7] = a[8] = a[9] = a[11] = a[12] = a[13] = a[14] = 0

    };

    c.interpolateTo = function(a, b) {

        0 > b ? b = 0 : 1 < b && (b = 1);

        var c = d.QUATERNION,

            e = this.decompose(c),

            g = a.decompose(c),

            m = e[0],

            k = g[0],

            k = k.subtract(m);

        k.scaleBy(b);

        var m = m.add(k),

            l = e[1],

            p = g[1],

            g = l.x,

            e = l.y,

            k = l.z,

            l = l.w,

            r = p.x,

            q = p.y,

            t = p.z,

            p = p.w,

            u = g * r + e * q + k * t + l * p;

        0 > u && (r = -r, q = -q, t = -t, p = -p, u = -u);

        var v;

        if (.9999 < u) v = 1 - b, u = b;

        else {

            v =

                Math.sqrt(1 - u * u);

            var u = Math.atan2(v, u),

                B = 1 / v;

            v = Math.sin((1 - b) * u) * B;

            u = Math.sin(b * u) * B

        }

        this.recompose([m, new createjs.Vector3D(g * v + r * u, e * v + q * u, k * v + t * u, l * v + p * u), new createjs.Vector3D(1, 1, 1)], c)

    };

    c.invert = function() {

        var a = this.rawData,

            b = a[0],

            c = a[4],

            d = a[8],

            n = a[12],

            m = a[1],

            k = a[5],

            l = a[9],

            p = a[13],

            r = a[2],

            q = a[6],

            t = a[10],

            u = a[14],

            v = a[3],

            B = a[7],

            E = a[11],

            A = a[15],

            y = t * A - E * u,

            x = l * A - E * p,

            D = l * u - t * p,

            F = r * B - v * q,

            M = m * B - v * k,

            N = m * q - r * k,

            G = b * (k * y - q * x + B * D) - c * (m * y - r * x + v * D) + d * (p * F - u * M + A * N) - n * (l * F - t * M + E * N);

        if (0 === G) return !1;

        var G = 1 /

            G,

            I = d * A - E * n,

            T = d * u - t * n,

            V = b * B - v * c,

            W = b * q - r * c,

            K = d * p - l * n,

            H = b * k - m * c;

        a[0] = (k * y - q * x + B * D) * G;

        a[1] = (m * y - r * x + v * D) * -G;

        a[2] = (p * F - u * M + A * N) * G;

        a[3] = (l * F - t * M + E * N) * -G;

        a[4] = (c * y - q * I + B * T) * -G;

        a[5] = (b * y - r * I + v * T) * G;

        a[6] = (n * F - u * V + A * W) * -G;

        a[7] = (d * F - t * V + E * W) * G;

        a[8] = (c * x - k * I + B * K) * G;

        a[9] = (b * x - m * I + v * K) * -G;

        a[10] = (n * M - p * V + A * H) * G;

        a[11] = (d * M - l * V + E * H) * -G;

        a[12] = (c * D - k * T + q * K) * -G;

        a[13] = (b * D - m * T + r * K) * G;

        a[14] = (n * N - p * W + u * H) * -G;

        a[15] = (d * N - l * W + t * H) * G;

        return !0

    };

    c.prepend = function(b) {

        a.call(this, this, b)

    };

    c.prependRotation = function(a, c, d) {

        var e,

            f, g;

        e = f = g = 0;

        d instanceof createjs.Vector3D && (e = d.x, f = d.y, g = d.z);

        d = a * b.DEG_TO_RAD;

        a = Math.cos(d);

        d = Math.sin(d);

        var k = c.x,

            l = c.y;

        c = c.z;

        var p = k * k,

            r = l * l,

            q = c * c,

            t = p + r + q;

        if (0 !== t) {

            var u = Math.sqrt(t),

                k = k / u,

                l = l / u;

            c /= u;

            p /= t;

            r /= t;

            q /= t

        }

        var t = 1 - a,

            u = new b,

            v = u.rawData;

        v[0] = p + (r + q) * a;

        v[1] = k * l * t + c * d;

        v[2] = k * c * t - l * d;

        v[4] = k * l * t - c * d;

        v[5] = r + (p + q) * a;

        v[6] = l * c * t + k * d;

        v[8] = k * c * t + l * d;

        v[9] = l * c * t - k * d;

        v[10] = q + (p + r) * a;

        v[12] = (e * (r + q) - k * (f * l + g * c)) * t + (f * c - g * l) * d;

        v[13] = (f * (p + q) - l * (e * k + g * c)) * t + (g * k - e * c) * d;

        v[14] = (g * (p + r) - c * (e * k + f * l)) * t +

            (e * l - f * k) * d;

        this.prepend(u)

    };

    c.prependScale = function(a, b, c) {

        var d = this.rawData;

        isNaN(a) || 1 === a || (d[0] *= a, d[1] *= a, d[2] *= a, d[3] *= a);

        isNaN(b) || 1 === b || (d[4] *= b, d[5] *= b, d[6] *= b, d[7] *= b);

        isNaN(c) || 1 === c || (d[8] *= c, d[9] *= c, d[10] *= c, d[11] *= c)

    };

    c.prependTranslation = function(a, b, c) {

        a = a || 0;

        b = b || 0;

        c = c || 0;

        var d = this.rawData,

            e = d[1],

            f = d[5],

            g = d[9],

            l = d[2],

            p = d[6],

            r = d[10],

            q = d[3],

            t = d[7],

            u = d[11];

        d[12] += d[0] * a + d[4] * b + d[8] * c;

        d[13] += e * a + f * b + g * c;

        d[14] += l * a + p * b + r * c;

        d[15] += q * a + t * b + u * c

    };

    c.recompose = function(a, b) {

        if (!a || 3 > a.length) return !1;

        for (var c = 0; 3 > c; c++)

            if (!(a[c] instanceof createjs.Vector3D)) return !1;

        var e = d,

            g = e.EULER_ANGLES,

            c = e.QUATERNION,

            m = e.AXIS_ANGLE;

        b = b || g;

        if (b !== g && b !== c && b !== m) throw Error("The 2nd parameter is invalid.");

        c = this.rawData;

        e = a[0];

        c[12] = e.x;

        c[13] = e.y;

        c[14] = e.z;

        var e = a[1],

            k = a[2];

        c[0] = c[1] = c[2] = k.x;

        c[4] = c[5] = c[6] = k.y;

        c[8] = c[9] = c[10] = k.z;

        if (b === g) {

            var g = e.x,

                m = Math.cos(g),

                g = Math.sin(g),

                l = e.y,

                k = Math.cos(l),

                l = Math.sin(l),

                p = e.z,

                e = Math.cos(p),

                p = Math.sin(p);

            c[0] = c[0] * k * e;

            c[1] = c[1] * k * p;

            c[2] *= -l;

            c[4] *= g * l * e - m * p;

            c[5] *=

                g * l * p + m * e;

            c[6] = c[6] * g * k;

            c[8] *= m * l * e + g * p;

            c[9] *= m * l * p - g * e;

            c[10] = c[10] * m * k

        } else g = e.x, k = e.y, l = e.z, e = e.w, b === m && (e *= .5, m = Math.sin(e), g *= m, k *= m, l *= m, e = Math.cos(e)), c[0] *= 1 - 2 * (k * k + l * l), c[1] = 2 * c[1] * (g * k + l * e), c[2] = 2 * c[2] * (g * l - k * e), c[4] = 2 * c[4] * (g * k - l * e), c[5] *= 1 - 2 * (g * g + l * l), c[6] = 2 * c[6] * (k * l + g * e), c[8] = 2 * c[8] * (g * l + k * e), c[9] = 2 * c[9] * (k * l - g * e), c[10] *= 1 - 2 * (g * g + k * k);

        return !0

    };

    c.toString = function() {

        return "[Matrix3D [" + Array.prototype.slice.call(this.rawData).toString() + "]]"

    };

    c.transformVector = function(a) {

        var b = a.x,

            c = a.y;

        a = a.z;

        var d = this.rawData;

        return new createjs.Vector3D(d[0] * b + d[4] * c + d[8] * a + d[12], d[1] * b + d[5] * c + d[9] * a + d[13], d[2] * b + d[6] * c + d[10] * a + d[14], 1)

    };

    c.transformVectors = function(a, b) {

        for (var c = this.rawData, d = c[0], e = c[4], g = c[8], k = c[12], l = c[1], p = c[5], r = c[9], q = c[13], t = c[2], u = c[6], v = c[10], c = c[14], B, E, A, y = 0, x = a.length; y < x; y += 3) {

            var D = y + 1,

                F = y + 2;

            B = a[y];

            E = a[D];

            A = a[F];

            b[y] = d * B + e * E + g * A + k;

            b[D] = l * B + p * E + r * A + q;

            b[F] = t * B + u * E + v * A + c

        }

    };

    c.transpose = function() {

        var a = this.rawData;

        this.rawData = new Float32Array([a[0], a[4], a[8],

            a[12], a[1], a[5], a[9], a[13], a[2], a[6], a[10], a[14], a[3], a[7], a[11], a[15]

        ])

    };

    b.DEG_TO_RAD = Math.PI / 180;

    b.interpolate = function(a, c, f) {

        0 > f ? f = 0 : 1 < f && (f = 1);

        var e = d.QUATERNION;

        a = a.decompose(e);

        var g = c.decompose(e);

        c = a[0];

        var m = g[0],

            m = m.subtract(c);

        m.scaleBy(f);

        c = c.add(m);

        var k = a[1],

            l = g[1];

        a = k.x;

        var g = k.y,

            m = k.z,

            k = k.w,

            p = l.x,

            r = l.y,

            q = l.z,

            l = l.w,

            t = a * p + g * r + m * q + k * l;

        0 > t && (p = -p, r = -r, q = -q, l = -l, t = -t);

        var u;

        if (.9999 < t) u = 1 - f;

        else {

            u = Math.sqrt(1 - t * t);

            var t = Math.atan2(u, t),

                v = 1 / u;

            u = Math.sin((1 - f) * t) * v;

            f = Math.sin(f * t) * v

        }

        f = [c,

            new createjs.Vector3D(a * u + p * f, g * u + r * f, m * u + q * f, k * u + l * f), new createjs.Vector3D(1, 1, 1)

        ];

        c = new b;

        c.recompose(f, e);

        return c

    };

    var d = {

        AXIS_ANGLE: "axisAngle",

        EULER_ANGLES: "eulerAngles",

        QUATERNION: "quaternion"

    };

    createjs.Matrix3D = b;

    createjs.Orientation3D = d

})(window);

(function(c) {

    if (createjs && createjs.Point) {

        var b = createjs.Point;

        c = b.prototype;

        Object.defineProperty(c, "length", {

            get: function() {

                var a = this.x,

                    b = this.y;

                return Math.sqrt(a * a + b * b)

            }

        });

        c.add = function(a) {

            return new b(this.x + a.x, this.y + a.y)

        };

        c.subtract = function(a) {

            return new b(this.x - a.x, this.y - a.y)

        };

        c.equals = function(a) {

            return this.x === a.x && this.y === a.y

        };

        c.normalize = function(a) {

            var b = this.length;

            0 === b || 0 === a ? this.y = this.x = 0 : (a /= b, this.x *= a, this.y *= a)

        };

        c.offset = function(a, b) {

            this.x += a;

            this.y += b

        };

        c.setTo = function(a,

            b) {

            this.x = a;

            this.y = b

        };

        c.copyFrom = c.copy;

        b.distance = function(a, b) {

            return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2))

        };

        b.interpolate = function(a, c, e) {

            return new b((a.x - c.x) * e + c.x, (a.y - c.y) * e + c.y)

        };

        b.polar = function(a, c) {

            return new b(Math.cos(c) * a, Math.sin(c) * a)

        }

    }

})(window);

this.createjs = this.createjs || {};

(function(c) {

    function b(a, b, c, g) {

        this.x = a || 0;

        this.y = b || 0;

        this.z = c || 0;

        this.w = g || 0

    }

    c = b.prototype = {

        get length() {

            var a = this.x,

                b = this.y,

                c = this.z;

            return Math.sqrt(a * a + b * b + c * c)

        }, get lengthSquared() {

            var a = this.x,

                b = this.y,

                c = this.z;

            return a * a + b * b + c * c

        }

    };

    c.constructor = b;

    c.add = function(a) {

        return new b(this.x + a.x, this.y + a.y, this.z + a.z)

    };

    c.subtract = function(a) {

        return new b(this.x - a.x, this.y - a.y, this.z - a.z)

    };

    c.equals = function(a, b) {

        return b ? this.x === a.x && this.y === a.y && this.z === a.z && this.w === a.w : this.x === a.x && this.y ===

            a.y && this.z === a.z

    };

    c.nearEquals = function(a, b, c) {

        var d = Math.abs(a.x - this.x),

            e = Math.abs(a.y - this.y),

            h = Math.abs(a.z - this.z);

        return c ? (a = Math.abs(a.w - this.w), d < b && e < b && h < b && a < b) : d < b && e < b && h < b

    };

    c.negate = function() {

        this.x = -this.x;

        this.y = -this.y;

        this.z = -this.z

    };

    c.incrementBy = function(a) {

        this.x += a.x;

        this.y += a.y;

        this.z += a.z

    };

    c.decrementBy = function(a) {

        this.x -= a.x;

        this.y -= a.y;

        this.z -= a.z

    };

    c.scaleBy = function(a) {

        this.x *= a;

        this.y *= a;

        this.z *= a

    };

    c.project = function() {

        var a = this.w;

        this.x /= a;

        this.y /= a;

        this.z /= a

    };

    c.normalize =

        function() {

            var a = this.length;

            0 !== a && (this.x /= a, this.y /= a, this.z /= a);

            return a

        };

    c.dotProduct = function(a) {

        return this.x * a.x + this.y * a.y + this.z * a.z

    };

    c.crossProduct = function(a) {

        var c = this.x,

            e = this.y,

            g = this.z,

            f = a.x,

            h = a.y;

        a = a.z;

        return new b(e * a - g * h, g * f - c * a, c * h - e * f, 1)

    };

    c.setTo = function(a, b, c) {

        this.x = a;

        this.y = b;

        this.z = c

    };

    c.copyFrom = function(a) {

        this.x = a.x;

        this.y = a.y;

        this.z = a.z

    };

    c.clone = function() {

        return new b(this.x, this.y, this.z, this.w)

    };

    c.toString = function() {

        return "[Vector3D (x=" + this.x + " y=" + this.y + " z=" +

            this.z + ")]"

    };

    b.X_AXIS = new b(1, 0, 0);

    b.Y_AXIS = new b(0, 1, 0);

    b.Z_AXIS = new b(0, 0, 1);

    b.distance = function(a, b) {

        return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2) + Math.pow(b.z - a.z, 2))

    };

    b.angleBetween = function(a, b) {

        var c = a.dotProduct(b) / (a.length * b.length);

        return 1 < c ? 0 : -1 > c ? Math.PI : Math.acos(c)

    };

    createjs.Vector3D = b

})(window);



function app() {

    function c(a, b, c) {

        a.prepend(1, 0, 0, 1, b, c);

        return a

    }



    function b(a, b, c) {

        a.prepend(b, 0, 0, c, 0, 0);

        return a

    }



    function a(a, b) {

        a.prepend(Math.cos(b), Math.sin(b), -Math.sin(b), Math.cos(b), 0, 0);

        return a

    }



    function d(a, b, c) {

        return new createjs.Point(b.x + (a.x - b.x) * c, b.y + (a.y - b.y) * c)

    }



    function e(a, b) {

        return new createjs.Point(a.transformPoint(b.x, b.y).x, a.transformPoint(b.x, b.y).y)

    }



    function g(a) {

        return window.localStorage ? window.localStorage.getItem("MonsterSoccerData") : null

    }



    function f(a) {

        Aa++;

        null == sa ?

            (sa = new createjs.Bitmap(res_path+"res/" + a+'?v=1.1'), sa.image.onload = function(a) {

                sa = null;

                Oa++;

                Ia.length && (Aa--, f(Ia.shift()))

            }, Pa[a] = sa) : Ia.push(a)

    }



    function h(a) {

        return new createjs.Bitmap(Pa[a].image)

    }



    function n(a) {

        0 == Qa && createjs.Sound.play(a)

    }



    function m() {

        v(new createjs.Vector3D);

        ka = !1;

        var a = H("ball");

        a.container.x -= a.p[0].x;

        a.container.y -= a.p[0].y;

        var b = new createjs.Container;

        b.addChild(a.container);

        J = {

            p: new createjs.Vector3D(0, 0, .65),

            v: new createjs.Vector3D,

            r: 1.3,

            s: new createjs.Vector3D(1.3, 1.3, 3),

            timer: 0,

            sprite: b

        };

        ea = ha = Y = 0;

        w = [];

        for (X = []; Ba.numChildren;) Ba.removeChildAt(0);

        p(pa.visible ? new createjs.Point(2.3, 2.1) : new createjs.Point(1, 2.5), "monster0_", "eye", "mouth");

        w[0].rad = Math.PI / 1.8;

        p(new createjs.Point(-1, C.y), "monster1_", "eye", "mouth");

        w[1].rad = Math.PI / 2.1;

        l(new createjs.Point(-2, C.y + C.height));

        l(new createjs.Point(2, C.y + C.height));

        l(new createjs.Point(-2, C.y));

        l(new createjs.Point(2, C.y))

    }



    function k(a, b, c) {

        for (var d = 0; 3 > d; d++) a.spriteList[0].list[d].container.getChildAt(b).visible = c

    }



    function l(a) {

        var b =

            new createjs.Container,

            c = H("rod");

        c.container.x = -c.p[1 < X.length ? 0 : 1].x;

        c.container.y = -c.p[1 < X.length ? 0 : 1].y;

        b.addChild(c.container);

        a = {

            p: new createjs.Vector3D(a.x, a.y),

            v: new createjs.Vector3D,

            s: new createjs.Vector3D(.1, .1, 2),

            r: .1,

            sprite: b,

            z: a.y

        };

        X.push(a);

        return a

    }



    function p(a, b, c, d) {

        a = new createjs.Vector3D(a.x, a.y, 1);

        var e = new createjs.Point(.8, 1.5),

            z = new createjs.Point(.2, -1.2);

        new createjs.Point(.2, 0);

        new createjs.Point(.3, .7);

        var f = [];

        b = [b, null, "stick", "foot", "stick", "foot"];

        for (var g = 0; g < b.length; g++) {

            var h =

                null == b[g] ? null : {

                    list: [H(b[g] + "U"), H(b[g] + "R"), H(b[g] + "D")],

                    container: {

                        s: new createjs.Container

                    }

                };

            f.push(h)

        }

        b = ["empty", c + "0R", c + "0D", "empty", d + "0R", d + "0D", "empty", c + "1R", c + "1D", "empty", d + "1R", d + "1D"];

        for (g = 0; g < b.length; g++) c = f[0].list[g % 3].p, d = H(b[g]), d.container.x = -d.p[0].x + c[Math.floor(g / 3) % 2 + 2].x, d.container.y = -d.p[0].y + c[Math.floor(g / 3) % 2 + 2].y, f[0].list[g % 3].container.addChild(d.container);

        c = 2 * Math.random();

        a = {

            spriteList: f,

            a: new createjs.Point,

            p: a,

            v: new createjs.Vector3D,

            r: e.x,

            s: new createjs.Vector3D(e.x,

                e.x, e.y),

            rad: 0,

            fl: {

                w: new createjs.Vector3D(0, -z.x, z.y),

                t: c

            },

            fr: {

                w: new createjs.Vector3D(0, z.x, z.y),

                t: (c + 1) % 2

            },

            hl: new createjs.Vector3D(0, -e.x / 2, 0),

            hr: new createjs.Vector3D(.6, e.x / 2, .4),

            h: -z.y,

            end: 0,

            punch: 0,

            f: 100,

            vs: 13

        };

        a.temp = 3E3 * Math.random();

        a.sprite = new createjs.Container;

        a.target = A(a.p);

        a.rad = Math.PI / 2.1;

        a.eye = 1;

        a.eyeTime = 0;

        a.mouth = 1;

        a.mouthTime = 0;

        N(a, L, []);

        w.push(a);

        return a

    }



    function r() {

        var a = new createjs.Matrix2D(L.rawData[0], 0, 0, L.rawData[0], L.rawData[12], L.rawData[13]);

        a.invert();

        var b = S.transformMatrix.clone();

        b.invert();

        b.prependMatrix(a);

        return e(b, new createjs.Point(Q.mouseX, Q.mouseY))

    }



    function q(a, b) {

        return b.x > a[0] && b.y > a[1] && b.x < a[0] + a[2] && b.y < a[1] + a[3]

    }



    function t(b, c) {

        if (u(b, c, 0, !1))

            if (c == J) {

                if (Ca || (Ca = .3, Ja = (Ja + 1) % 4, n(qa[Ja + 1])), ka = !0, !(J.timer || u(w[0], J, 0, !1) && u(w[1], J, 0, !1))) {

                    J.timer = .2;

                    b.punchIndex = .5 < b.fr.t && 1.5 > b.fr.t ? 1 : 0;

                    b.punch = 1;

                    var d = new createjs.Point(0, C.y + (c == w[1] ? C.height : 0)),

                        z = A(c.p.subtract(b.p));

                    E(z, d.subtract(A(c.p)));

                    z.normalize(20 * O + 0 * O);

                    d = new createjs.Matrix2D;

                    b == w[1] && a(d, (Math.random() -

                        .5) * Math.PI / 4);

                    z = e(d, z);

                    c.v = y(z);

                    c.p = c.p.add(c.v)

                }

            } else u(b, c, .5, !0), z = createjs.Point.interpolate(new createjs.Point(Math.cos(b.rad), Math.sin(b.rad)), A(b.v), Math.min(A(b.v).length / .1 / O, 1)), Math.abs(E(A(c.p.subtract(b.p)), z)) < .5 * Math.PI && (Da = .4, Ea || (Ea = .5, n(qa[0])), b.punchIndex = .5 < b.fr.t && 1.5 > b.fr.t ? 1 : 0, b.punch = 1, z = A(c.p.subtract(b.p)), z.normalize(40 * O), c.v = y(z), c.p = c.p.add(c.v), z.normalize(-15 * O), b.v = b.v.add(y(z)))

    }



    function u(a, b, c, d) {

        var e;

        var z = a.p.add(new createjs.Vector3D(-a.s.x / 2, -a.s.y / 2)),

            f = a.s;

        e = a.r;

        var g = b.p.add(new createjs.Vector3D(-b.s.x / 2, -b.s.y / 2)),

            h = b.s,

            k = b.r;

        e /= 2;

        k /= 2;

        h = z.add(new createjs.Vector3D(e, e, e)).subtract(g.add(h).subtract(new createjs.Vector3D(k, k, k)));

        z = z.add(f).subtract(new createjs.Vector3D(e, e, e)).subtract(g.add(new createjs.Vector3D(k, k, k)));

        f = new createjs.Vector3D(Math.min(Math.max(0, h.x), z.x), Math.min(Math.max(0, h.y), z.y), Math.min(Math.max(0, h.z), z.z));

        if (0 < f.length) f.length > e + k ? e = new createjs.Vector3D : (f.scaleBy(-Math.max(e + k - f.length, 0) / f.length), e = f);

        else {

            e = [new createjs.Vector3D(h.x - e - k, f.y, f.z), new createjs.Vector3D(f.x, h.y - e - k, f.z), new createjs.Vector3D(f.x, f.y, h.z - e - k), new createjs.Vector3D(z.x + e + k, f.y, f.z), new createjs.Vector3D(f.x, z.y + e + k, f.z), new createjs.Vector3D(f.x, f.y, z.z + e + k)];

            k = e[0];

            for (h = 1; h < e.length; h++) e[h].length < k.length && (k = e[h]);

            e = k

        }

        e.scaleBy(.5);

        k = new createjs.Vector3D(e.x * c, e.y * c, e.z * c);

        k.scaleBy(.2);

        d && (a.p = a.p.subtract(k));

        d && a.v && (a.v = a.v.subtract(k));

        k = new createjs.Vector3D(e.x * (1 - c), e.y * (1 - c), e.z * (1 - c));

        k.scaleBy(.2);

        d && (b.p =

            b.p.add(k));

        d && b.v && (b.v = b.v.add(k));

        return 0 < k.length

    }



    function v(a) {

        L = new createjs.Matrix3D;

        L.appendTranslation(-a.x, -a.y, -a.z);

        L.appendScale(40, 40, 40);

        L.appendScale(1, Math.SQRT2, Math.SQRT2);

        L.appendRotation(45, createjs.Vector3D.X_AXIS);

        L.appendTranslation(Ka / 2, Ra / 2, 0)

    }



    function B(a, b, c, d) {

        a = new createjs.Text("", b, a);

        a.x = c;

        a.y = d;

        return a

    }



    function E(a, b) {

        return Math.atan2(a.x * b.y - a.y * b.x, a.x * b.x + a.y * b.y)

    }



    function A(a) {

        return new createjs.Point(a.x, a.y)

    }



    function y(a) {

        return new createjs.Vector3D(a.x,

            a.y, 0)

    }



    function x(a, b) {

        return Math.min(Math.max(a, -b), b)

    }



    function D(a, b) {

        a = a.clone();

        a.normalize(Math.min(a.length, b));

        return a

    }



    function F(a, b) {

        a = a.clone();

        var c = a.length;

        a.normalize();

        a.scaleBy(Math.min(c, b));

        return a

    }



    function M(a, b, c, d) {

        if (b < a[0]) return a[1 + c];

        for (var e = d + 1; e < a.length; e += d + 1)

            if (b < a[e]) return a[e - d + c] + (a[e + 1 + c] - a[e - d + c]) * (b - a[e - d - 1]) / (a[e] - a[e - d - 1]);

        return a[a.length - d + c]

    }



    function N(a, b, c) {

        var e = new createjs.Matrix3D;

        e.appendRotation(a.rad / Math.PI * 180, createjs.Vector3D.Z_AXIS);

        e.appendTranslation(a.p.x,

            a.p.y, a.p.z);

        var f = e.clone();

        f.invert();

        a.m || (T(a.fl, null, 1, null, 0, null), T(a.fr, null, 1, null, 0, null), a.m = e);

        g = f.transformVector(a.m.transformVector(a.fl.n));

        g = g.subtract(f.transformVector(a.m.transformVector(new createjs.Vector3D)));

        a.fl.n = g;

        g = f.transformVector(a.m.transformVector(a.fr.n));

        g = g.subtract(f.transformVector(a.m.transformVector(new createjs.Vector3D)));

        a.fr.n = g;

        a.fl.p = f.transformVector(a.m.transformVector(a.fl.p));

        a.fr.p = f.transformVector(a.m.transformVector(a.fr.p));

        g = f.transformVector(a.v).subtract(f.transformVector(new createjs.Vector3D));

        T(a.fl, g, 3.3 * R, e, a.h, c);

        T(a.fr, g, 3.3 * R, e, a.h, c);

        a.m = e;

        var g = a.fr.f.subtract(a.fl.f);

        c = .3 * Math.PI;

        c = Math.max(0, Math.abs(Math.atan2(-g.x, g.y)) - (Math.PI - c)) / c;

        g = d(a.fr.f, a.fl.f, .5);

        a.fl.f.setTo(a.fl.f.x * (1 - c) + g.x * c, a.fl.f.y * (1 - c) + g.y * c, a.fl.f.z);

        a.fr.f.setTo(a.fr.f.x * (1 - c) + g.x * c, a.fr.f.y * (1 - c) + g.y * c, a.fr.f.z);

        g = new createjs.Matrix3D;

        g.appendRotation(a.rad / Math.PI * 180, createjs.Vector3D.Z_AXIS);

        c = (new createjs.Point(a.v.x, a.v.y)).length;

        var h = new createjs.Vector3D,

            h = d(h, I("leg", "walk", 0, a.fr.t / 2, 1.2, 1),

                Math.max(Math.min((c - 4 * O) / (2 * O), 1), 0)),

            h = d(h, I("leg", "run", 0, a.fr.t / 2, 1.2, 1), Math.max(Math.min((c - 8 * O) / (2 * O), 1), 0)),

            h = a.fr.f.add(h),

            k = new createjs.Vector3D,

            k = d(k, I("leg", "walk", 0, a.fl.t / 2, 1.2, 1), Math.max(Math.min((c - 4 * O) / (2 * O), 1), 0)),

            k = d(k, I("leg", "run", 0, a.fl.t / 2, 1.2, 1), Math.max(Math.min((c - 8 * O) / (2 * O), 1), 0)),

            k = a.fl.f.add(k),

            e = a.fr.n,

            f = a.fl.n;

        if (a.punch) {

            var z = M([0, 0, .1, 1, .9, 1, 1, 0], a.punch, 0, 1);

            0 == a.punchIndex ? h = d(h, I("leg", "kick", 0, a.punch, 1.2, 1), z) : k = d(k, I("leg", "kick", 0, a.punch, 1.2, 1), z)

        }

        var m =

            new createjs.Matrix3D,

            z = I("body", "run", 0, a.fr.t % 1, 1.2, 1);

        z.scaleBy(Math.max(Math.min((c - 12 * O) / (2 * O), 1), 0));

        m.appendTranslation(z.x, z.y, z.z);

        c = [m.transformVector(new createjs.Vector3D(0, 0, a.s.z)), m.transformVector(new createjs.Vector3D), m.transformVector(new createjs.Vector3D(0, .2, 0)), h, m.transformVector(new createjs.Vector3D(0, -.2, 0)), k];

        e = [0, a.rad, 1.2, G(A(g.transformVector(e))), 1.2, G(A(g.transformVector(f)))];

        g.appendTranslation(a.p.x, a.p.y, a.p.z);

        for (f = 0; f < c.length; f++) c[f] = g.transformVector(c[f]);

        g = a.a.clone();

        g.y *= .2;

        g.normalize(.3 * g.length);

        z = y(g);

        c[0] = c[0].add(z);

        g = a.spriteList;

        a = [a.sprite];

        for (f = 0; f < e.length; f += 2) {

            var n, z = a,

                l = b,

                p = c[f],

                k = c[f + 1],

                m = e[f + 1];

            n = e[f];

            var q = g[f],

                h = g[f + 1],

                za = l.rawData[0] / 40,

                r = Math.round((Math.asin(Math.sin(m)) + Math.PI / 2) / Math.PI * 2),

                t = q.list[r];

            if (h) var u = h.list[r];

            if (h) {

                var r = p,

                    Ha = k,

                    v = new createjs.Vector3D(Math.cos(m), Math.sin(m)),

                    w;

                w = Ha;

                var x = v,

                    v = r.subtract(Ha);

                v.normalize();

                x = v.crossProduct(x);

                x.normalize();

                var B = x.crossProduct(v);

                B.normalize();

                w = new createjs.Matrix3D([B.x,

                    B.y, B.z, 0, x.x, x.y, x.z, 0, v.x, v.y, v.z, 0, w.x, w.y, w.z, 1

                ]);

                r = r.subtract(Ha).length;

                n = new createjs.Vector3D(Math.sqrt(Math.max(n * n - r * r, 0) / 4), 0, r / 2);

                n = w.transformVector(n)

            } else n = k;

            q.container.a = p.clone();

            q.container.b = n.clone();

            h && (h.container.a = n.clone());

            h && (h.container.b = k.clone());

            p = l.transformVector(p);

            k = l.transformVector(k);

            n = l.transformVector(n);

            l = K(new createjs.Point(p.x, p.y), new createjs.Point(n.x, n.y), t.p[0], t.p[1], 0 < Math.cos(m) ? za : -za, t.p[0].y, t.h - t.p[1].y);

            q.container.s.transformMatrix = l.clone();

            q.container.s.numChildren && q.container.s.removeChildAt(0);

            q.container.s.addChild(t.container);

            q.container.s.parent != z[0] && z[0].addChild(q.container.s);

            W(z, q.container, q.container.s.parent.getChildIndex(q.container.s) + 1);

            h && (k = K(new createjs.Point(n.x, n.y), new createjs.Point(k.x, k.y), u.p[0], u.p[1], 0 < Math.cos(m) ? za : -za, u.p[0].y, u.h - u.p[1].y), h.container.s.transformMatrix = k.clone(), h.container.s.numChildren && h.container.s.removeChildAt(0), h.container.s.addChild(u.container), h.container.parent != z[0] &&

                z[0].addChild(h.container.s), W(z, h.container, h.container.s.parent.getChildIndex(h.container.s) + 1))

        }

        c = !0;

        for (b = 0; c && b < (a.length - 1) * (a.length - 1);)

            for (b++, c = !1, u = 1; u < a.length - 1; u++)

                if (z = a[u].a, g = a[u].b, f = a[u + 1].a, h = a[u + 1].b, e = z.subtract(f), z = z.subtract(h).subtract(e), g = g.subtract(f).subtract(e), f = (new createjs.Vector3D).subtract(e), z.scaleBy(Math.min(Math.max(z.dotProduct(f) / z.dotProduct(z), .1), .9)), g.scaleBy(Math.min(Math.max(g.dotProduct(f) / g.dotProduct(g), .1), .9)), e = e.add(z).add(g), g = new createjs.Vector3D(0,

                    1, 1), g.normalize(), g.dotProduct(e), 0 < g.dotProduct(e)) {

                    a[0].addChildAt(a[u + 1].s, u - 1);

                    c = a[u];

                    a[u] = a[u + 1];

                    a[u + 1] = c;

                    c = !0;

                    break

                }

    }



    function G(a) {

        return Math.atan2(a.y, a.x)

    }



    function I(a, b, c, d, e, f) {

        var g;

        a: {

            for (g = 0; g < la.length && ("q" != la[g][0] || la[g][1] != a || la[g][2] != b); g++);

            a = [];

            for (g += 1; g < la.length; g++) {

                if ("q" == la[g][0]) {

                    g = a;

                    break a

                }

                a.push(la[g])

            }

            g = a

        }

        c = g[c];

        d = new createjs.Vector3D(M(c, d, 0, 3), M(c, d, 1, 3), M(c, d, 2, 3));

        f *= e;

        c = new createjs.Matrix3D;

        c.appendScale(e, f, e);

        return c.transformVector(d)

    }



    function d(a,

        b, c) {

        return new createjs.Vector3D(a.x * (1 - c) + b.x * c, a.y * (1 - c) + b.y * c, a.z * (1 - c) + b.z * c)

    }



    function T(a, b, c, e, f, g) {

        if (a.w) a.p = a.w.clone(), a.f = a.w.clone(), a.r = a.w.y, a.n = new createjs.Vector3D(1), a.w = null;

        else {

            var h = a.t;

            a.t = (a.t + c) % 2;

            b = new createjs.Vector3D(b.x * (1.5 - Math.min(a.t, 1)) / c, b.y * (1.5 - Math.min(a.t, 1)) / c + a.r);

            e = e.transformVector(b);

            b.z = V(A(e), g) - e.z;

            1 <= a.t ? (1 > h && (a.p = b.clone()), b = a.p.clone()) : a.n = new createjs.Vector3D(1);

            g = Math.min(Math.abs(Math.max(Math.min(b.z, .2 * -f), -f) - b.z) / f, 1);

            h = d(b, new createjs.Vector3D(b.x,

                .5 * a.r, -f), g);

            g = Math.min(Math.abs(Math.max(Math.min(a.p.z, .2 * -f), -f) - a.p.z) / f, 1);

            e = d(a.p, new createjs.Vector3D(a.p.x, .5 * a.r, -f), g);

            b = d(e, h, Math.min(a.t, 1));

            a.f = a.f.add(F(b.subtract(a.f), 15 * O))

        }

    }



    function V(a, b) {

        for (var c = -1E3, d = 0; d < b.length; d++) {

            var e;

            e = a;

            var f = b[d].p.add(new createjs.Vector3D(-b[d].s.x / 2, -b[d].s.y / 2)),

                g = b[d].s,

                h = b[d].r,

                k = new createjs.Point(Math.min(Math.max(e.x, f.x + .5 * h), f.x + g.x - .5 * h), Math.min(Math.max(e.y, f.y + .5 * h), f.y + g.y - .5 * h)),

                k = e.subtract(k);

            e = k.length <= .5 * h ? new createjs.Vector3D(e.x,

                e.y, f.z + g.z - h + Math.sqrt(h - k.x * k.x - k.y * k.y)) : null;

            e && e.z > c && (c = e.z)

        }

        return c

    }



    function W(a, b, c) {

        var d = a[c];

        a[c] ? a[c] = b : d = b;

        for (b = c + 1; b < a.length - 1; b++) c = a[b], a[b] = d, d = c;

        a.push(d)

    }



    function K(d, e, f, g, h, k, m) {

        var n = g.subtract(f);

        n.normalize(1);

        f = f.subtract(new createjs.Point(n.x * k, n.y * k));

        g = g.add(new createjs.Point(n.x * m, n.y * m));

        n = e.subtract(d);

        n.normalize(1);

        k *= Math.abs(h);

        m *= Math.abs(h);

        d = d.subtract(new createjs.Point(n.x * k, n.y * k));

        e = e.add(new createjs.Point(n.x * m, n.y * m));

        k = new createjs.Matrix2D(1, 0, 0,

            1);

        b(k, g.subtract(f).length, 1 / h);

        a(k, Math.atan2(g.y - f.y, g.x - f.x));

        c(k, f.x, f.y);

        k.invert();

        b(k, e.subtract(d).length, 1);

        a(k, Math.atan2(e.y - d.y, e.x - d.x));

        d.subtract(e);

        f.subtract(g);

        c(k, d.x, d.y);

        return k

    }



    function H(a) {

        for (var b = Va, d = 0; d < b.a.length; d++) {

            var e = b.a[d];

            if (e.n == a) {

                a = new createjs.Matrix2D;

                a.scale(b.scale, b.scale);

                var f = new createjs.Point(e.r[0], e.r[1]);

                c(a, -f.x, -f.y);

                a = {

                    container: new createjs.Container

                };

                d = h("skin/" + d + ".png");

                d.scaleX = d.scaleY = b.scale;

                a.container.addChild(d);

                e.b && (a.s = new createjs.Vector3D(e.b[2],

                    e.b[3] * (1 - e.b[4]), e.b[3] * e.b[4]));

                e.b && (a.b = new createjs.Point(e.b[0] - e.r[0] + a.s.x / 2, e.b[1] - e.r[1] + a.s.y / 2));

                for (b = 0; e.p && b < e.p.length; b += 2) a.p || (a.p = []), a.p.push(new createjs.Point(e.p[b] - e.r[0], e.p[b + 1] - e.r[1]));

                a.w = e.r[2];

                a.h = e.r[3];

                return a

            }

        }

        return null

    }

    var U = {};

    window.onkeydown = function(a) {

        U[a.keyCode.toString()] = !0

    };

    window.onkeyup = function(a) {

        delete U[a.keyCode.toString()]

    };

    var Q = new createjs.Stage("canvas"),

        da = Q.canvas.width,

        ga = Q.canvas.height,

        P = 0,

        ma = 0,

        Qa = !1;

    createjs.Touch.enable(Q);

    createjs.Ticker.setFPS(60);

    createjs.Ticker.addEventListener("tick", function(a) {

        a = Z;

        var d = new Date,

            l = 1E3 / (d - Sa);

        Sa = d;

        Z = a + x(l - Z, 10 / Z);

        P = 0 == Aa ? 0 : Oa / Aa;

        ma += Math.min(Math.max(P - ma, 0), 1 / 3 * 1 / Z);

        0 == ta && (ma = P);

        if (1 == ma && 0 == ta) {

            ma = 0;

            ta = !0;

            S.addChild(Fa);

            Fa.addChild(aa);

            a = h("lagged-4.png");

            a.scaleX = a.scaleY = .4;

            a.x = 33;

            a.y = 90;

            Fa.addChild(a);

            a = h("email.png");

            a.scaleX = a.scaleY = .5;

            a.x = 148;

            a.y = 478;

            Fa.addChild(a);

            for (a = 0; 28 > a; a++) f("skin/" + a + ".png");

            f("sound.png");

            f("soundoff.png");

            f("lagged-5.png");

            for (a = 0; a < qa.length; a++) d = qa[a], createjs.Sound.registerSound(res_path+"res/" +

                d + ".mp3?v=1.1", d)

        }

        ta && 0 == ra && (a = [50, 380, 200, 20], aa.graphics.clear(), aa.graphics.beginFill("#ffffff"), aa.graphics.drawRect(a[0] - 10, a[1] - 10, a[2] + 20, a[3] + 20), aa.graphics.endFill(), aa.graphics.beginFill("#bdcba6"), aa.graphics.drawRect(a[0] - 5, a[1] - 5, a[2] + 10, a[3] + 10), aa.graphics.endFill(), aa.graphics.beginFill("#ffffff"), aa.graphics.drawRect(a[0], a[1], a[2] * ma, a[3]), aa.graphics.endFill());

        if (1 == ma && 1 == ta && 0 == ra) {

            S.removeChildAt(0);

            ra = !0;

            a = h("lagged-5.png");

            na.addChild(a);

            S.addChild(na);

            na.x = 10;

            na.y = 460;

            na.scaleX =

                na.scaleY = .17;

            O = 1 / (3.6 * Z);

            ia = 2 / (Z * Z);

            R = 1 / Z;

            ua = B("#ffffff", "24px Arial", 33, 150);

            ua.text = "怪物足球";

            Ga = B("#ffffff", "60px Arial", -10, 60);

            pa = B("#ffffff", "35px Arial", 45, 200);

            va = B("#ffffff", "30px Arial", 40, 150);

            wa = B("#ffffff", "30px Arial", 40, 250);

            pa.text = "游戏结束";

            pa.visible = !1;

            S.addChild(ua);

            S.addChild(Ga);

            S.addChild(pa);

            S.addChild(va);

            S.addChild(wa);

            a = h("sound.png");

            a.x = 236;

            a.y = 86;

            a.scaleX = a.scaleY = .4;

            S.addChild(a);

            La = a;

            a = h("soundoff.png");

            a.x = 236;

            a.y = 86;

            a.scaleX = a.scaleY = .4;

            xa = a;

            xa.visible = !1;

            S.addChild(a);

            S.addChild(Ba);

            S.addChild(ba);

            S.addChild(Wa);

            v(new createjs.Vector3D);

            a = ["field", new createjs.Vector3D(C.x, C.y), "grid2", new createjs.Vector3D(-2, C.y - 1), "grid1", new createjs.Vector3D(-2, C.y + C.height + 1)];

            for (d = 0; d < a.length; d += 2) {

                var l = new createjs.Container,

                    p = H(a[d]);

                p.container.x = -p.p[0].x;

                p.container.y = -p.p[0].y;

                l.addChild(p.container);

                l = {

                    p: a[d + 1],

                    z: a[d + 1].y,

                    sprite: l

                };

                ya.push(l);

                l.sprite.scaleX = l.sprite.scaleY = L.rawData[0] / 40;

                l.sprite.x = L.transformVector(l.p).x;

                l.sprite.y = L.transformVector(l.p).y

            }

            ya[0].z = -1E3;

            ya[0].sprite.scaleY *= .75;

            m();

            p = H("circle1");

            p.container.x = -p.p[0].x;

            p.container.y = -p.p[0].y;

            ba.addChild((new createjs.Container).addChild(p.container).parent);

            p = H("circle2");

            p.container.x = -p.p[0].x;

            p.container.y = -p.p[0].y;

            ba.addChild((new createjs.Container).addChild(p.container).parent)

        }

        if (ra) {

            O = 1 / (3.6 * Z);

            ia = 2 / (Z * Z);

            R = 1 / Z;

            Ca = Math.max(Ca - R, 0);

            Ea = Math.max(Ea - R, 0);

            Da = Math.max(Da - R, 0);

            a = Math.min(ea / 10, 1);

            w[1].p.z = w[0].p.z = 1.20558;

            w[1].vs = 10 * (1 - a) + 15 * a;

            w[1].f = 1.1 * (1 - a) + 4.2 * a;

            a = 1 - Da / .4;

            w[1].f = 20 *

                (1 - a) + w[1].f * a;

            ha && ((ha = Math.max(ha - R, 0)) || m());

            if (!ha && Y && (Y = Math.max(Y - R, 0), !Y)) {

                var p = null,

                    z = 1E3;

                for (a = 0; 5 > a; a++) d = new createjs.Point(C.x + C.width * (.2 + .6 * Math.random()), C.y + C.height * (.2 + .6 * Math.random())), l = Math.abs(d.subtract(A(w[0].p)).length - d.subtract(A(w[1].p)).length), l < z && (z = l, p = d);

                J.p = y(p);

                J.p.z = J.s.x / 2;

                J.v = new createjs.Vector3D

            }

            v(new createjs.Vector3D);

            d = new createjs.Point(0, C.y + C.height + Ta);

            a = new createjs.Point;

            a.x = (U["37"] || U["65"] ? -1 : 0) + (U["39"] || U["68"] ? 1 : 0);

            a.y = (U["38"] || U["87"] ? -1 :

                0) + (U["40"] || U["83"] ? 1 : 0);

            l = new createjs.Point;

            !ha && Ma ? (a = r().subtract(d), a.normalize(Math.min(a.length, .5 * Na)), l = a.clone(), l.normalize(.8 * l.length), a.normalize(a.length / (.5 * Na)), ca += x(1.2 - ca, 2 * R)) : ca += x(.8 - ca, 2 * R);

            ba.getChildAt(0).x = L.transformVector(y(d)).x;

            ba.getChildAt(0).y = L.transformVector(y(d)).y;

            ba.getChildAt(0).scaleX = ba.getChildAt(0).scaleY = ca;

            ba.getChildAt(1).x = L.transformVector(y(d.add(new createjs.Point(l.x * ca, l.y * ca)))).x;

            ba.getChildAt(1).y = L.transformVector(y(d.add(new createjs.Point(l.x *

                ca, l.y * ca)))).y;

            ba.getChildAt(1).scaleX = ba.getChildAt(1).scaleY = ca;

            w[0].target = A(w[0].p).add(a);

            w[0].target.x = Math.min(Math.max(w[0].target.x, C.x - 1.3), C.x + C.width + 1.3);

            w[0].target.y = Math.min(Math.max(w[0].target.y, C.y - 1), C.y + C.height + 1);

            a = (new createjs.Vector3D(0, C.y + C.height + 1)).subtract(J.p);

            a = E(A(J.p.subtract(w[1].p)), A(a));

            new createjs.Matrix2D;

            J.p.subtract(w[1].p);

            l = a / Math.PI / .4;

            l = Math.min(Math.max(l, -1), 1);

            p = new createjs.Point(-J.p.y + w[1].p.y, J.p.x - w[1].p.x);

            p.normalize(-2.5 * l);

            ka && (w[1].target =

                A(J.p.add(y(p))));

            Y && (w[0].target = new createjs.Point(0, C.y + C.height - 1), w[1].target = new createjs.Point(0, C.y + 1));

            for (a = 0; a < X.length; a++) X[a].sprite.scaleX = X[a].sprite.scaleY = L.rawData[0] / 40, X[a].sprite.x = L.transformVector(X[a].p).x, X[a].sprite.y = L.transformVector(X[a].p).y;

            for (a = 0; a < w.length; a++) {

                p = w[a].target.subtract(A(w[a].p));

                p.normalize(Math.min(p.length / 1, 1));

                w[a].punch = Math.max(w[a].punch - 1.7 * R, 0);

                d = w[a];

                l = p;

                p = new createjs.Point(Math.cos(d.rad), Math.sin(d.rad));

                z = createjs.Point.interpolate(l,

                    p, Math.min(l.length / .1, 1));

                l.normalize(Math.pow(l.length, 4));

                l = l.clone();

                l.normalize(l.length * d.vs * O);

                var G = d.f;

                d.atack && (d.atack = Math.max(d.atack - R, 0), p.normalize(30 * O), z = l = p, G = 10);

                p = Math.PI / 3 * Math.round(Math.atan2(z.y, z.x) / (Math.PI / 3));

                d.rad += x(E(new createjs.Point(Math.cos(d.rad), Math.sin(d.rad)), new createjs.Point(Math.cos(p), Math.sin(p))), 2 * Math.PI * R);

                l = D(l.subtract(new createjs.Point(d.v.x, d.v.y)), G * ia);

                p = A(d.v);

                d.v.x += l.x;

                d.v.y += l.y;

                l = D((new createjs.Point).subtract(new createjs.Point(d.v.x,

                    d.v.y)), .1 * ia);

                d.v.x += l.x;

                d.v.y += l.y;

                d.v.z -= 9.8 * ia;

                d.p = d.p.add(d.v);

                l = A(d.v).subtract(p);

                l.normalize(l.length / ia);

                l = D(l.subtract(d.a), .5 * R + 4 * R * Math.pow(d.a.length, .5));

                d.a = d.a.add(l);

                d.a = D(d.a, 1);

                l = (V(A(d.p), Ua) + d.h - d.p.z) / d.h;

                l = Math.max(Math.min(20 * O * l - d.v.z, 15 * ia), 0);

                d.v.z += l;

                d.p.z += l;

                !Y && u(w[a], J, 0, !1)

            }

            t(w[0], J);

            t(w[1], J);

            t(w[0], w[1]);

            u(w[0], J, .2, !0);

            u(w[1], J, .5, !0);

            a = J;

            a.sprite.rotation += a.v.x / 2 * 180;

            a.v = a.v.subtract(F(a.v, 3 * ia));

            a.p = a.p.add(a.v);

            a.sprite.x = L.transformVector(a.p).x;

            a.sprite.y =

                L.transformVector(a.p).y;

            a.sprite.scaleX = a.sprite.scaleY = L.rawData[0] / 40 * 1.3;

            a.z = a.p.y;

            d = Math.min(a.v.length / (20 * O), 1);

            d = Math.pow(d, 3);

            a.p.z = d * Math.abs(Math.sin(1.8 * d * Math.PI)) * .2 + a.s.x / 2;

            a.timer = Math.max(a.timer - R, 0);

            for (a = 0; a < X.length; a++) u(X[a], J, 0, !0);

            l = .8 * J.s.x / 2;

            !Y && q([-2, C.y - 4, 4, 4], A(J.p)) && (Y = 1.5, ea++, n(qa[5]), ja = Math.max(ea, ja, g("bestScore")), window.localStorage && window.localStorage.setItem("MonsterSoccerData", ja), va.text = "分数     " + ea, wa.text = "最佳     " + ja);

            !Y && q([-2, C.y + C.height + l, 4,

                4

            ], A(J.p)) && (a = Math.max(ea, ja, g("bestScore")), a > ja ? saveScore(a) : saveScore(a), ja = a, commonGameOver(ea,null,null,function(){}),va.text = "分数     " + ea, wa.text = "最佳     " + ja, Y = 1.5, ha = 4, n(qa[6]));

            if (ea > bestscore && !Y && q([-2, C.y + C.height + l, 4, 4], A(J.p))) {

                bestscore = ea;

                console.log(ea);

                console.log('new best');

            };

            Y || q([C.x - l, C.y, C.width + 2 * l, C.height + l], A(J.p)) || (Y = 1.5);

            A(L.transformVector(new createjs.Vector3D(C.x, C.y)));

            for (a = 0; a < w.length; a++) w[a].eyeTime = Math.max(w[a].eyeTime - R, 0), 0 == w[a].eyeTime && (w[a].eye = w[a].eye ? 0 : 1, w[a].eyeTime = w[a].eye ? .1 + .3 * Math.random() : 1 + 1.5 * Math.random()), w[a].mouthTime = Math.max(w[a].mouthTime -

                R, 0), 0 == w[a].mouthTime && (w[a].mouth = w[a].mouth ? 0 : 1, w[a].mouthTime = w[a].mouth ? .9 + .8 * Math.random() : 1.8 + 4.9 * Math.random()), d = w[a].eye, l = w[a].mouth, k(w[a], 1, 0 == d), k(w[a], 3, 1 == d), k(w[a], 2, 0 == l), k(w[a], 4, 1 == l), N(w[a], L, Ua), w[a].z = w[a].p.y;

            d = w.concat([J]).concat(X).concat(ya);

            for (a = 0; a < d.length * d.length; a++) {

                p = !1;

                for (l = 0; l < d.length - 1; l++) d[l].z > d[l + 1].z && (p = d[l], d[l] = d[l + 1], d[l + 1] = p, p = !0);

                if (0 == p) break

            }

            for (a = 0; a < d.length; a++) Ba.addChild(d[a].sprite);

            Ga.text = (10 > ea ? "  " : "") + ea;

            Ga.visible = ka;

            ua.visible = ua.visible ?

                !ka : !1;

            na.visible = !ka;

            wa.visible = va.visible = !ka;

            pa.visible = ha ? !0 : !1

        }

        fa.scaleX = da / 100;

        fa.scaleY = ga / 100;

        a = new createjs.Matrix2D;

        c(a, -Ka / 2, 0);

        d = Math.min(da / Ka, ga / Ra);

        b(a, d, d);

        b(a, 1 / (canvas.clientWidth / canvas.clientHeight * canvas.height / canvas.width), 1);

        c(a, da / 2, 0);

        S.transformMatrix = a.clone();

        oa && (a.invert(), 10 < e(a, new createjs.Point(Q.mouseX, Q.mouseY)).subtract(oa).length && (oa = null));

        Q.update()

    });

    Q.on("stagemousedown", function(a) {

        a = S.transformMatrix.clone();

        a.invert();

        a = e(a, new createjs.Point(Q.mouseX,

            Q.mouseY));

        0 == ra && 0 < a.x && 70 < a.y && 300 > a.x && 340 > a.y;

         // && window.open("http://lagged.com", "_blank");

        oa = a;

        0 != ra && r().subtract(new createjs.Point(0, C.y + C.height + Ta)).length < 2.5 * Na && (Ma = r())

    });

    Q.on("stagemouseup", function(a) {

        if (oa) {

            a = oa;

            var b = [232, 88, 266, 119];

            a.x > b[0] && a.y > b[1] && a.x < b[2] && a.y < b[3] && (La.visible = !La.visible, xa.visible = !xa.visible, Qa = xa.visible);

            b = [0, 452, 120, 500];

            a.x > b[0] && a.y > b[1] && a.x < b[2] && a.y < b[3] 

            // && window.open("http://lagged.com", "_blank")

        }

        Ma = oa = null

    });

    var Sa = new Date,

        Pa = {},

        sa, Ia = [],

        Aa = 0,

        Oa = 0,

        S = new createjs.Container,

        Z = 50,

        ra = !1,

        ta = !1,

        oa, O, ia, R, L, w = [],

        Wa = new createjs.Container,

        Ma, Ua = [{

            p: new createjs.Vector3D(0, 0, -1),

            s: new createjs.Vector3D(100, 100, 1),

            r: 0

        }],

        J, Da = 0,

        C = {

            x: -3,

            y: -3,

            width: 6,

            height: 6

        },

        Y = 0,

        ha = 0,

        X = [],

        ea = 0,

        ja = 0,

        ka = !1,

        ya = [],

        Ba = new createjs.Container,

        Ka = 300,

        Ra = 500,

        Ta = .51,

        Na = 1,

        ca = 1,

        ua, Ga, pa, va, wa, qa = "punch kick1 kick2 kick3 kick4 goal gameover".split(" "),

        Ca = 0,

        Ea = 0,

        Ja = 0,

        ba = new createjs.Container,

        fa = new createjs.Shape,

        Fa = new createjs.Container,

        aa = new createjs.Shape,

        na = new createjs.Container,

        La, xa, la = [

            ["q", "leg", "kick"],

            [0, 0, 0, -1, .7, 1, 0, -.1, .9, 1, 0, 0, 1, 0, 0, -1],

            ["q", "body", "run"],

            [0, 0, 0, 0, .4, 0, 0, .09, .8, 0, 0, .09, 1, 0, 0, 0],

            ["q", "leg", "walk"],

            [0, 0, 0, 0, .1, 0, 0, .4, .6, 0, 0, 0, 1, 0, 0, 0],

            [0, 1, 0, 0],

            ["q", "leg", "run"],

            [0, -.1, 0, .6, .6, .1, 0, .1, .7, 0, 0, 0, .9, 0, 0, 0, 1, -.1, 0, .5],

            [0, 1, 0, 0]

        ],

        Va = {

            url: "skin1.png",

            scale: 60 / 202,

            a: [{

                n: "monster0_U",

                r: [0, 0, 70.1, 80.2],

                p: [32.7, 7.7, 32.7, 67.7, 0, 0, 0, 0]

            }, {

                n: "monster0_R",

                r: [70.1, 0, 70.1, 80.2],

                p: [104.3, 7.7, 104.3, 67.7, 123.6, 37.1, 131, 44.9]

            }, {

                n: "monster0_D",

                r: [140.2, 0, 70.1, 80.2],

                p: [172,

                    7.7, 172, 67.7, 181.5, 37.7, 184.8, 46.9

                ]

            }, {

                n: "monster1_U",

                r: [0, 80.2, 70.1, 80.2],

                p: [32.7, 87.9, 32.7, 147.9, 0, 80.2, 0, 80.2]

            }, {

                n: "monster1_R",

                r: [70.1, 80.2, 70.1, 80.2],

                p: [104.3, 87.9, 104.3, 147.9, 123.6, 117.3, 131, 125]

            }, {

                n: "monster1_D",

                r: [140.2, 80.2, 70.1, 80.2],

                p: [172, 87.9, 172, 147.9, 181.5, 117.9, 184.8, 127.1]

            }, {

                n: "stickU",

                r: [0, 160.4, 13.7, 23.5],

                p: [6.5, 163.7, 6.8, 181.5]

            }, {

                n: "stickR",

                r: [13.7, 160.4, 13.7, 23.5],

                p: [20.2, 163.7, 20.5, 181.5]

            }, {

                n: "stickD",

                r: [27.3, 160.4, 13.7, 23.5],

                p: [33.9, 163.7, 34.2, 181.5]

            }, {

                n: "footU",

                r: [41, 160.4,

                    15.1, 27.6

                ],

                p: [47.5, 163.7, 48.1, 182.4]

            }, {

                n: "footR",

                r: [56.1, 160.4, 15.1, 27.6],

                p: [63.3, 163.7, 63.3, 182.4]

            }, {

                n: "footD",

                r: [71.3, 160.4, 15.1, 27.6],

                p: [78.4, 163.7, 78.4, 182.4]

            }, {

                n: "eye0R",

                r: [86.4, 160.4, 16, 14.9],

                p: [93.6, 167.8]

            }, {

                n: "eye0D",

                r: [102.5, 160.4, 30.9, 22],

                p: [118.8, 172]

            }, {

                n: "eye1R",

                r: [133.4, 160.4, 16, 14.9],

                p: [140.5, 167.8]

            }, {

                n: "eye1D",

                r: [149.4, 160.4, 30.9, 22],

                p: [165.7, 172]

            }, {

                n: "mouth0R",

                r: [180.3, 160.4, 19.6, 20.5],

                p: [196.9, 167.5]

            }, {

                n: "mouth0D",

                r: [0, 188, 33.3, 27.3],

                p: [16.9, 202]

            }, {

                n: "mouth1R",

                r: [33.3, 188, 19.6, 20.5],

                p: [49.9, 195.1]

            }, {

                n: "mouth1D",

                r: [52.9, 188, 33.3, 27.3],

                p: [69.8, 202]

            }, {

                n: "ball",

                r: [86.1, 188, 44, 37.7],

                p: [107.8, 206.7]

            }, {

                n: "field",

                r: [211, 8, 248, 332],

                p: [216, 16]

            }, {

                n: "grid1",

                r: [480, 5, 186, 139],

                p: [494, 135]

            }, {

                n: "grid2",

                r: [489, 170, 171, 92],

                p: [494, 255]

            }, {

                n: "rod",

                r: [685, 11, 21, 129],

                p: [694, 133, 694, 95]

            }, {

                n: "empty",

                r: [86.1, 188, .3, .3],

                p: [86.1, 188]

            }, {

                n: "circle1",

                r: [481, 266, 85, 80],

                p: [525, 304]

            }, {

                n: "circle2",

                r: [581, 282, 50, 43],

                p: [607, 304]

            }]

        };

    fa.graphics.clear();

    fa.graphics.beginFill("#bdcba6");

    fa.graphics.drawRect(0, 0, 100,

        100);

    fa.graphics.endFill();

    fa.scaleX = da / 100;

    fa.scaleY = ga / 100;

    Q.addChild(fa);

    Q.addChild(S);

    f("lagged-4.png");

    f("email.png")

};